From b410df3d9783695b32072910abe52e1716b1f603 Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:07:51 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ++++++++----------- .../codemaker/constant/ArchConstant.java | 4 +- .../constant/ArchSpringConstant.java | 4 +- .../app/user/crm/core/Application.java | 2 +- .../core/controller/AccountController.java | 2 +- .../AttractInvestmentController.java | 2 +- .../crm/core/controller/BaseController.java | 2 +- .../LandlordContractTemplateController.java | 2 +- .../LandlordRoomRentRecordController.java | 2 +- .../LandlordRoomSourceController.java | 2 +- .../controller/RealRoomSourceController.java | 2 +- .../core/controller/RoomAgentController.java | 2 +- .../controller/RoomAgentOrderController.java | 2 +- .../controller/RoomLandlordController.java | 2 +- .../controller/RoomPublishController.java | 2 +- .../controller/RoomSubscribeController.java | 2 +- .../user/crm/core/entity/AccountEntity.java | 2 +- .../core/entity/AttractInvestmentEntity.java | 2 +- .../LandlordContractTemplateEntity.java | 2 +- .../entity/LandlordRoomRentRecordEntity.java | 2 +- .../core/entity/LandlordRoomSourceEntity.java | 2 +- .../crm/core/entity/RealRoomSourceEntity.java | 2 +- .../user/crm/core/entity/RoomAgentEntity.java | 2 +- .../crm/core/entity/RoomAgentOrderEntity.java | 2 +- .../crm/core/entity/RoomLandlordEntity.java | 2 +- .../crm/core/entity/RoomPublishEntity.java | 2 +- .../crm/core/entity/RoomSubscribeEntity.java | 2 +- .../user/crm/core/mapper/AccountMapper.java | 2 +- .../core/mapper/AttractInvestmentMapper.java | 2 +- .../LandlordContractTemplateMapper.java | 2 +- .../mapper/LandlordRoomRentRecordMapper.java | 2 +- .../core/mapper/LandlordRoomSourceMapper.java | 2 +- .../crm/core/mapper/RealRoomSourceMapper.java | 2 +- .../user/crm/core/mapper/RoomAgentMapper.java | 2 +- .../crm/core/mapper/RoomAgentOrderMapper.java | 2 +- .../crm/core/mapper/RoomLandlordMapper.java | 2 +- .../crm/core/mapper/RoomPublishMapper.java | 2 +- .../crm/core/mapper/RoomSubscribeMapper.java | 2 +- .../user/crm/core/service/AccountService.java | 2 +- .../service/AttractInvestmentService.java | 2 +- .../LandlordContractTemplateService.java | 2 +- .../LandlordRoomRentRecordService.java | 2 +- .../service/LandlordRoomSourceService.java | 2 +- .../core/service/RealRoomSourceService.java | 2 +- .../core/service/RoomAgentOrderService.java | 2 +- .../crm/core/service/RoomAgentService.java | 2 +- .../crm/core/service/RoomLandlordService.java | 2 +- .../crm/core/service/RoomPublishService.java | 2 +- .../core/service/RoomSubscribeService.java | 2 +- .../core/service/impl/AccountServiceImpl.java | 2 +- .../impl/AttractInvestmentServiceImpl.java | 2 +- .../LandlordContractTemplateServiceImpl.java | 2 +- .../LandlordRoomRentRecordServiceImpl.java | 2 +- .../impl/LandlordRoomSourceServiceImpl.java | 2 +- .../impl/RealRoomSourceServiceImpl.java | 2 +- .../impl/RoomAgentOrderServiceImpl.java | 2 +- .../service/impl/RoomAgentServiceImpl.java | 2 +- .../service/impl/RoomLandlordServiceImpl.java | 2 +- .../service/impl/RoomPublishServiceImpl.java | 2 +- .../impl/RoomSubscribeServiceImpl.java | 2 +- .../app/user/crm/core/vo/AccountVO.java | 2 +- .../user/crm/core/vo/AttractInvestmentVO.java | 2 +- .../core/vo/LandlordContractTemplateVO.java | 2 +- .../crm/core/vo/LandlordRoomRentRecordVO.java | 2 +- .../crm/core/vo/LandlordRoomSourceVO.java | 2 +- .../user/crm/core/vo/RealRoomSourceVO.java | 2 +- .../user/crm/core/vo/RoomAgentOrderVO.java | 2 +- .../app/user/crm/core/vo/RoomAgentVO.java | 2 +- .../app/user/crm/core/vo/RoomLandlordVO.java | 2 +- .../app/user/crm/core/vo/RoomPublishVO.java | 2 +- .../app/user/crm/core/vo/RoomSubscribeVO.java | 2 +- .../core/service/test/AccountServiceTest.java | 2 +- .../test/AttractInvestmentServiceTest.java | 2 +- .../LandlordContractTemplateServiceTest.java | 2 +- .../LandlordRoomRentRecordServiceTest.java | 2 +- .../test/LandlordRoomSourceServiceTest.java | 2 +- .../test/RealRoomSourceServiceTest.java | 2 +- .../test/RoomAgentOrderServiceTest.java | 2 +- .../service/test/RoomAgentServiceTest.java | 2 +- .../service/test/RoomLandlordServiceTest.java | 2 +- .../service/test/RoomPublishServiceTest.java | 2 +- .../test/RoomSubscribeServiceTest.java | 2 +- todoList | 44 +++++++++-------- 83 files changed, 129 insertions(+), 129 deletions(-) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/constant/ArchConstant.java (87%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/constant/ArchSpringConstant.java (91%) diff --git a/README.md b/README.md index 06fd742..9fda52e 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ coderMaker 立足于低代码平台,致力于解决软件开发过程中的效 3. 不做任何脚手架,不依赖任何特定框架版本 4. 按开发者习惯支持多模式生成 5. 兼容并蓄,在codemaker的组件化架构设计中一切业务组件,中间件,脚手架都是组件都是可配置可融入到代码生成流程的。 +6. 生成即可运行 #### 功能列表 1. 提供数据库字段文本转sql脚本的能力 @@ -37,7 +38,7 @@ coderMaker 立足于低代码平台,致力于解决软件开发过程中的效 1. 粉红色为codeMaker提供的平台能力工程 2. 浅蓝色为生成代码架构的模板工程 -[模块详细说明](MODULE.md) +[模块详细说明](doc/md/MODULE.md) ##### 2. 架构图 1. v1版本 @@ -49,6 +50,9 @@ coderMaker 立足于低代码平台,致力于解决软件开发过程中的效 3. v3预览版本 ![image](doc/img/天画-低代码平台(codeMaker)-v3-预览版.png) + 3. v3版本 +![image](doc/img/天画-低代码平台(codeMaker)-v3版本.png) + ##### 3. 使用流程图 1. v1版本 ![image](doc/img/天画-快速生成springboot微服务工程流程图.png) @@ -77,21 +81,23 @@ coderMaker 立足于低代码平台,致力于解决软件开发过程中的效 ##### 版本3的技术方案设计 [codeMaker-支持动态调用时序代码生成](https://mp.weixin.qq.com/s?__biz=MzI2OTE2OTc3MQ==&mid=2247484106&idx=1&sn=acacbf015246351c7662c900d878e6af&chksm=eae527cedd92aed8de8452dd83061bc729a3007d30d3bbe786abca08c7337530f214a8334f98&token=1918485743&lang=zh_CN#rd) +[codeMaker-组件化架构升级实战](https://blog.csdn.net/u010504064/article/details/122480997) #### 使用手册 codeMaker支持多模式进行代码生成,具体看下列文档 -##### [纯数据库模式](USEDBYONLYDB.md) +##### [纯数据库模式](doc/md/USEDBYONLYDB.md) -##### [基于PlantUML 的动态DDD模式](USEDBYDYNAMICDDD.md) +##### [基于PlantUML 的动态DDD模式](doc/md/USEDBYDYNAMICDDD.md) -##### [基于PlantUML 的动态DDD+数据库模式](USEDBYDBANDDDD.md) +##### [基于PlantUML 的动态DDD+数据库模式](doc/md/USEDBYDBANDDDD.md) -##### [基于PlantUML 的动态DDD+数据库+plantUML调用时序图文档模式](USEDBYDBANDPLANTUML.md) +##### [基于PlantUML 的动态DDD+数据库+plantUML调用时序图文档模式](doc/md/USEDBYDBANDPLANTUML.md) -##### 基于PlantUML 的动态DDD+基于PlantUML的E-R数据模型模式(todo) +##### [基于全文档模式](doc/md/USEDBYALLDOC.md) +##### [基于JavsScript项目模式](doc/md/USEDBYJAVSSCRIPT.md) -#### [版本变更-详细内容](CHANGELIST.md) +#### [版本变更-详细内容](doc/md/CHANGELIST.md) ##### 版本-1.0.0 @@ -125,18 +131,21 @@ codeMaker支持多模式进行代码生成,具体看下列文档 简介: 进行组件化架构升级,开放低代码模型和扩展接口能力,重构codemaker-core模块,移动到codemaker-parent模块统一维护, 增加springcloud-feign应用框架代码生成能力 +##### 版本-1.3.0 +简介: 以生成即可运行为目标完成组件化架构升级,以组件市场的方式融合各种java组件和技术栈, +增加两种生成模式,对接javsScript引擎细化生成逻辑 #### 项目计划 1. 参考todoList文件内容 -2. [参考changeList文件内容](CHANGELIST.md) +2. [参考changeList文件内容](doc/md/CHANGELIST.md) #### 配置文件说明 -[组件注册流程与二次开发说明文档](COMPOENTREGIST.md) +[组件注册流程与二次开发说明文档](doc/md/COMPOENTREGIST.md) -[开发使用详细配置内容](CONFIG.md) +[开发使用详细配置内容](doc/md/CONFIG.md) -[构建DDD-plantUML领域文档使用说明](DDDPLANTUMLDOC.md) +[构建DDD-plantUML领域文档使用说明](doc/md/DDDPLANTUMLDOC.md) #### 代码生成服务使用流程 ##### 1.应用级项目生成 @@ -155,21 +164,6 @@ codeMaker支持多模式进行代码生成,具体看下列文档 4. 执行完毕查看codemaker-dynamicddd工程模块下的代码是否已经生成 ##### 3.接口文档 -[API.md](API.md) - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支,需求todo参考todoList文档 -3. 提交代码 -4. 新建 Pull Request - +[API.md](doc/md/API.md) -#### 码云特技 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchConstant.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchConstant.java similarity index 87% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchConstant.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchConstant.java index 27024fe..305ac64 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchConstant.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchConstant.java @@ -1,10 +1,10 @@ -package com.coderman.codemaker.constant; +package com.tianhua.codemaker.constant; /** * Description:依赖的中间件框架的相关常量 * date: 2021/11/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchSpringConstant.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchSpringConstant.java similarity index 91% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchSpringConstant.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchSpringConstant.java index fdee052..e656116 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ArchSpringConstant.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ArchSpringConstant.java @@ -1,10 +1,10 @@ -package com.coderman.codemaker.constant; +package com.tianhua.codemaker.constant; /** * Description: * date: 2021/12/13 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/Application.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/Application.java index 38bb7fe..069855f 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/Application.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/Application.java @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:应用启动入口 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AccountController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AccountController.java index fe86a42..9b0fd72 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AccountController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AccountController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:合作用户表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AttractInvestmentController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AttractInvestmentController.java index 84026bd..df15337 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AttractInvestmentController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/AttractInvestmentController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:招商服务注册表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/BaseController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/BaseController.java index 2e406e4..e6b989a 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/BaseController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/BaseController.java @@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory; /** * @Description:控制层基础父类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordContractTemplateController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordContractTemplateController.java index 7f25e4a..133b0a7 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordContractTemplateController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordContractTemplateController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:房东合同模板表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomRentRecordController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomRentRecordController.java index b1b064f..792289e 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomRentRecordController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomRentRecordController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:房源出租记录表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomSourceController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomSourceController.java index d9a3f65..244c1b4 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomSourceController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/LandlordRoomSourceController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:房东-房源表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RealRoomSourceController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RealRoomSourceController.java index 82f5856..6253c51 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RealRoomSourceController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RealRoomSourceController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:房东-房源表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentController.java index 69719a5..af2ec71 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:代理人表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentOrderController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentOrderController.java index 9f70f6d..175e3ab 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentOrderController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomAgentOrderController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:代理人-签单表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomLandlordController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomLandlordController.java index 4d80067..06d5f5a 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomLandlordController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomLandlordController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:房东表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomPublishController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomPublishController.java index e03429c..e712ef8 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomPublishController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomPublishController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:代理人-房源发布表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomSubscribeController.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomSubscribeController.java index 21cc24c..314aba4 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomSubscribeController.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/controller/RoomSubscribeController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; /** * @Description:代理人-预约看房记录表控制层 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AccountEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AccountEntity.java index c2642dc..0edb5ec 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AccountEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AccountEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:合作用户表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AttractInvestmentEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AttractInvestmentEntity.java index 872ee00..cebb922 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AttractInvestmentEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/AttractInvestmentEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:招商服务注册表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordContractTemplateEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordContractTemplateEntity.java index ee21481..8b1a560 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordContractTemplateEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordContractTemplateEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:房东合同模板表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomRentRecordEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomRentRecordEntity.java index ffeb518..e9daae2 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomRentRecordEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomRentRecordEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:房源出租记录表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomSourceEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomSourceEntity.java index d50a5d0..e404335 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomSourceEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/LandlordRoomSourceEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:房东-房源表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RealRoomSourceEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RealRoomSourceEntity.java index 601a8b0..3ddcf34 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RealRoomSourceEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RealRoomSourceEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:房东-房源表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentEntity.java index 118836d..2d7922e 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:代理人表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentOrderEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentOrderEntity.java index 758ede4..1daa806 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentOrderEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomAgentOrderEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:代理人-签单表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomLandlordEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomLandlordEntity.java index f789656..69a19e4 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomLandlordEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomLandlordEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:房东表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomPublishEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomPublishEntity.java index 9754224..aba26fe 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomPublishEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomPublishEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:代理人-房源发布表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomSubscribeEntity.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomSubscribeEntity.java index d4ec9e4..67192c3 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomSubscribeEntity.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/entity/RoomSubscribeEntity.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * @Description:代理人-预约看房记录表Entity类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AccountMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AccountMapper.java index df82c2d..2c516b2 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AccountMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AccountMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.AccountEntity; /** * @Description:合作用户表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AttractInvestmentMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AttractInvestmentMapper.java index e030778..a978711 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AttractInvestmentMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/AttractInvestmentMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.AttractInvestmentEntity; /** * @Description:招商服务注册表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordContractTemplateMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordContractTemplateMapper.java index 9659b13..8517c59 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordContractTemplateMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordContractTemplateMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.LandlordContractTemplateEntity; /** * @Description:房东合同模板表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomRentRecordMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomRentRecordMapper.java index 3de40cf..7c6428b 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomRentRecordMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomRentRecordMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.LandlordRoomRentRecordEntity; /** * @Description:房源出租记录表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomSourceMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomSourceMapper.java index f496924..62af66d 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomSourceMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/LandlordRoomSourceMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.LandlordRoomSourceEntity; /** * @Description:房东-房源表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RealRoomSourceMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RealRoomSourceMapper.java index 443ee6e..96ee33f 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RealRoomSourceMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RealRoomSourceMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RealRoomSourceEntity; /** * @Description:房东-房源表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentMapper.java index 7c7e1b6..a707c9e 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RoomAgentEntity; /** * @Description:代理人表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentOrderMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentOrderMapper.java index 0eb14fd..3b4eaf1 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentOrderMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomAgentOrderMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RoomAgentOrderEntity; /** * @Description:代理人-签单表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomLandlordMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomLandlordMapper.java index 8d9a09b..76fa5d3 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomLandlordMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomLandlordMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RoomLandlordEntity; /** * @Description:房东表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomPublishMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomPublishMapper.java index c9f60a1..0f287b5 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomPublishMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomPublishMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RoomPublishEntity; /** * @Description:代理人-房源发布表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomSubscribeMapper.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomSubscribeMapper.java index f3195c5..4b0e6a6 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomSubscribeMapper.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/mapper/RoomSubscribeMapper.java @@ -6,7 +6,7 @@ import com.lightsnail.app.user.crm.core.entity.RoomSubscribeEntity; /** * @Description:代理人-预约看房记录表mapperDAO接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AccountService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AccountService.java index 6736e2b..d925720 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AccountService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AccountService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.AccountVO; /** * @Description:合作用户表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AttractInvestmentService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AttractInvestmentService.java index 10c4bab..f20bf3c 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AttractInvestmentService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/AttractInvestmentService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.AttractInvestmentVO; /** * @Description:招商服务注册表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordContractTemplateService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordContractTemplateService.java index 9e088da..a290c89 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordContractTemplateService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordContractTemplateService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.LandlordContractTemplateVO; /** * @Description:房东合同模板表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomRentRecordService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomRentRecordService.java index 2c78a75..fab0f1c 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomRentRecordService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomRentRecordService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.LandlordRoomRentRecordVO; /** * @Description:房源出租记录表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomSourceService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomSourceService.java index aec4b3e..5598c13 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomSourceService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/LandlordRoomSourceService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.LandlordRoomSourceVO; /** * @Description:房东-房源表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RealRoomSourceService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RealRoomSourceService.java index 899ab6d..e76a687 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RealRoomSourceService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RealRoomSourceService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RealRoomSourceVO; /** * @Description:房东-房源表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentOrderService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentOrderService.java index 567aa3f..a31d469 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentOrderService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentOrderService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RoomAgentOrderVO; /** * @Description:代理人-签单表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentService.java index dfd7461..7be389d 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomAgentService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RoomAgentVO; /** * @Description:代理人表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomLandlordService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomLandlordService.java index 96efe73..d17efb9 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomLandlordService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomLandlordService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RoomLandlordVO; /** * @Description:房东表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomPublishService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomPublishService.java index 8a75aaa..0261ad0 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomPublishService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomPublishService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RoomPublishVO; /** * @Description:代理人-房源发布表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomSubscribeService.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomSubscribeService.java index 791b041..196c299 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomSubscribeService.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/RoomSubscribeService.java @@ -8,7 +8,7 @@ import com.lightsnail.app.user.crm.core.vo.RoomSubscribeVO; /** * @Description:代理人-预约看房记录表Service接口 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AccountServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AccountServiceImpl.java index d46214f..29b3920 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AccountServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AccountServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:合作用户表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AttractInvestmentServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AttractInvestmentServiceImpl.java index bed27cb..9514def 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AttractInvestmentServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/AttractInvestmentServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:招商服务注册表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordContractTemplateServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordContractTemplateServiceImpl.java index 4bb6835..7d3e753 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordContractTemplateServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordContractTemplateServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:房东合同模板表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomRentRecordServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomRentRecordServiceImpl.java index 8d10939..07f7675 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomRentRecordServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomRentRecordServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:房源出租记录表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomSourceServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomSourceServiceImpl.java index c99269a..0b9036f 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomSourceServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/LandlordRoomSourceServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:房东-房源表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RealRoomSourceServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RealRoomSourceServiceImpl.java index 2226799..46cd555 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RealRoomSourceServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RealRoomSourceServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:房东-房源表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentOrderServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentOrderServiceImpl.java index b86abbc..8681087 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentOrderServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentOrderServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:代理人-签单表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentServiceImpl.java index 237c151..23871f1 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomAgentServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:代理人表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomLandlordServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomLandlordServiceImpl.java index 312ce58..545ed81 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomLandlordServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomLandlordServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:房东表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomPublishServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomPublishServiceImpl.java index ce9a579..e016cd5 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomPublishServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomPublishServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:代理人-房源发布表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomSubscribeServiceImpl.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomSubscribeServiceImpl.java index 2890608..67daf78 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomSubscribeServiceImpl.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/service/impl/RoomSubscribeServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; /** * @Description:代理人-预约看房记录表Service接口实现类 - * @Author:fanchunshuai + * @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AccountVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AccountVO.java index 260ff52..d04cbc2 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AccountVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AccountVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:合作用户表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AttractInvestmentVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AttractInvestmentVO.java index 14a9f94..34797af 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AttractInvestmentVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/AttractInvestmentVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:招商服务注册表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordContractTemplateVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordContractTemplateVO.java index 97e91bb..ae62c25 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordContractTemplateVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordContractTemplateVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:房东合同模板表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomRentRecordVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomRentRecordVO.java index 61a3ab2..92957bd 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomRentRecordVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomRentRecordVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:房源出租记录表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomSourceVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomSourceVO.java index 8352d33..7f8ec14 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomSourceVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/LandlordRoomSourceVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:房东-房源表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RealRoomSourceVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RealRoomSourceVO.java index 9cc412d..5d75268 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RealRoomSourceVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RealRoomSourceVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:房东-房源表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentOrderVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentOrderVO.java index e5cd466..6bda43b 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentOrderVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentOrderVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:代理人-签单表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentVO.java index 73d0401..b7aa803 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomAgentVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:代理人表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomLandlordVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomLandlordVO.java index 769383c..3090ed3 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomLandlordVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomLandlordVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:房东表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomPublishVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomPublishVO.java index 8036265..a627f79 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomPublishVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomPublishVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:代理人-房源发布表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomSubscribeVO.java b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomSubscribeVO.java index a009f90..63f9377 100644 --- a/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomSubscribeVO.java +++ b/codemaker-web/src/main/java/com/lightsnail/app/user/crm/core/vo/RoomSubscribeVO.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.ToString; /** * @Description:代理人-预约看房记录表VO类 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AccountServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AccountServiceTest.java index 3b0dfcf..a920a39 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AccountServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AccountServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:合作用户表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AttractInvestmentServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AttractInvestmentServiceTest.java index d36d646..5a3e28c 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AttractInvestmentServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/AttractInvestmentServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:招商服务注册表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordContractTemplateServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordContractTemplateServiceTest.java index f172e6b..10223c5 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordContractTemplateServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordContractTemplateServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:房东合同模板表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomRentRecordServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomRentRecordServiceTest.java index 034fc84..db11121 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomRentRecordServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomRentRecordServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:房源出租记录表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomSourceServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomSourceServiceTest.java index 09da91d..146dd74 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomSourceServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/LandlordRoomSourceServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:房东-房源表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RealRoomSourceServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RealRoomSourceServiceTest.java index ca12330..35bc731 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RealRoomSourceServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RealRoomSourceServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:房东-房源表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentOrderServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentOrderServiceTest.java index 98c281a..acd6c7b 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentOrderServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentOrderServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:代理人-签单表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:54 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentServiceTest.java index 1550a27..1075e14 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomAgentServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:代理人表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomLandlordServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomLandlordServiceTest.java index dba8e4f..ee159b7 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomLandlordServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomLandlordServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:房东表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomPublishServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomPublishServiceTest.java index aac3c9c..604b981 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomPublishServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomPublishServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:代理人-房源发布表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomSubscribeServiceTest.java b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomSubscribeServiceTest.java index 72ed256..79bc32c 100644 --- a/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomSubscribeServiceTest.java +++ b/codemaker-web/src/test/java/com/lightsnail/app/user/crm/core/service/test/RoomSubscribeServiceTest.java @@ -23,7 +23,7 @@ import org.springframework.test.context.junit4.SpringRunner; /** * @Description:代理人-预约看房记录表单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2020-11-17 00:02:53 * @version v1.0 */ diff --git a/todoList b/todoList index b8715d1..0e3101b 100644 --- a/todoList +++ b/todoList @@ -71,34 +71,40 @@ 1.3.0 版本(进行一次整体的架构升级) - 1.支持在调用时序中增加自定义流程控制语句如if else,fori,fore,fors,filter,mappingby,groupby - 2.支持可配置化的多种入参校验模式策略 - 3.支持在plantuml领域文档中增加方法注解并解析生成到项目代码里(transactional,lock,aop注解等) - 5.降低对数据库链接的强依赖,以数据库e-r图或者excel表作为数据库元数据信息的来源(链接默认数据库即可) - 7.自定义代码模板/片段,并融入到代码生成流程中,进一步开放代码生成能力接口 - 8.自定义代码模板/片段,并融入到动态调用时序中 - 9.在代码生成流程中调用时序中增加代码段 - 10.在代码生成流程中调用时序识别范型 - 11.增加配置项相关代码生成 - 12.将数据库sql文件复制到项目工程里 - 13.将plantUMl文档调用时序文档复制到项目工程里 - 14.打通语雀等api文档管理软件 - 15.管理pom依赖,走自动生成,统一maven技术栈 - 16.扩展plantUML生成代码时允许依赖外部代码类(如plantUML类中定义了xxxBO,但是需要显示的继承BaseBO,BaseBO可以不用单独声明class) - - + 1.支持在调用时序中增加自定义流程控制语句如if else,fori,fore,fors,filter,mappingby,groupby(该方案容易导致时序图过于细化同时时序图不容易表达代码化的东西,已通过javsScript解决) + 2.支持可配置化的多种入参校验模式策略(方案设计)(down) + 3.支持在plantuml领域文档中增加方法注解并解析生成到项目代码里(transactional,lock,logrecord注解等)(down) + 4.降低对数据库链接的强依赖,以数据库e-r图或者excel表作为数据库元数据信息的来源(链接默认数据库即可)(down) + 5.自定义代码元素模板/片段,并融入到代码生成流程中,进一步开放代码生成能力接口(方案设计)(代码元素模板自定义实现完成 down) + 6.自定义代码元素模板/片段,并融入到动态调用时序中(同第一点,代码片段可能需要结合JavsScript构建方法内容) + 7.在代码生成流程中调用时序中增加代码段(同第一点) + 8.在代码生成流程中调用时序识别范型 + 9.增加配置项相关代码生成(方案设计)(down) + 10.将数据库sql文件复制到项目工程里(down) + 11.将plantUMl文档调用时序文档复制到项目工程里(down) + 12.打通语雀等api文档管理软件(技术上存在问题,不一定完全兼容) + 13.管理pom依赖,走自动生成,统一maven技术栈(down) + 14.扩展plantUML生成代码时允许依赖外部代码类(如plantUML类中定义了xxxBO,但是需要显示的继承BaseBO,BaseBO可以不用单独声明class)(?) + 15.基于plantUML 的e-r图模式构建数据库模型(down) + 16.支持mybatis-plus组件,网关组件,脚手架等案例适配(mp,liteflow down) + 17.使用map+function重构各个应用类型下的代码生成逻辑(down) + 18.支持每个组件的配置项同步到项目工程中(down) + 19.新建codemaker-javs集成javs引擎(down) + 20.增加参数配置是否集成javs并生成javs脚本项目(down) + 21.支持纯数据库模式引入配置信息生成,自定义类信息生成,支持自定义组件导入(down) + 22.支持极速模式引入配置信息生成,自定义类信息生成,支持自定义组件导入(down) 6.支持 基于数据库模式, - 基于e-r图模式或者excel模式(todo), + 基于e-r图模式或者excel模式(e-r图模式down), 基于动态DDD领域文档模式, 基于动态DDD领域文档+数据库模式, 基于动态DDD领域文档+数据库/e-r图模式+调用时序文档模式 1.4 平台化,是否具有平台化的能力 - 1.持久层存储 - 2.页面交互设计 + 1.持久层存储(低代码底层表结构设计) + 2.页面交互设计(web页面配置交互) -- Gitee From 90dec169630d6b962585f74b000f7f8c4ddf2a23 Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:11:19 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codemaker/api/ICompDecorateService.java | 23 - .../codemaker/api/ICompRegistService.java | 25 - .../codemaker/api/ICompScanService.java | 24 - .../codemaker/bean/ClassContentBean.java | 94 --- .../coderman/codemaker/bean/ColumnBean.java | 203 ----- .../codemaker/bean/GeneratorSettingBean.java | 66 -- .../codemaker/bean/GlobalConstant.java | 214 ------ .../codemaker/bean/MapperMethodConstant.java | 30 - .../coderman/codemaker/bean/TableBean.java | 239 ------ .../codemaker/bean/WriteContentBean.java | 73 -- .../codemaker/bean/apidoc/ApiDocBean.java | 112 --- .../codemaker/bean/apidoc/ApiModuleBean.java | 12 - .../codemaker/bean/apidoc/ApiParamBean.java | 63 -- .../bean/component/ComponentConfigBean.java | 274 ------- .../bean/component/ComponentContextBean.java | 151 ---- .../bean/dddelement/AclElementBean.java | 12 - .../bean/dddelement/AggregateElementBean.java | 13 - .../dddelement/AppListenerElementBean.java | 13 - .../bean/dddelement/CacheElementBean.java | 13 - .../bean/dddelement/CommandElementBean.java | 12 - .../bean/dddelement/DomainBoElementBean.java | 13 - .../dddelement/DomainEventElementBean.java | 12 - .../dddelement/DomainMsgBodyElementBean.java | 12 - .../dddelement/DynamicMapperElementBean.java | 14 - .../DynamicMapperXmlElementBean.java | 14 - .../bean/dddelement/ElementBean.java | 151 ---- .../bean/dddelement/ExecutorElementBean.java | 12 - .../bean/dddelement/FactoryElementBean.java | 13 - .../bean/dddelement/GatawayElementBean.java | 14 - .../dddelement/InfrastAclElementBean.java | 12 - .../dddelement/MqConsumerElementBean.java | 13 - .../bean/dddelement/MqHandlerElementBean.java | 13 - .../dddelement/MqProducerElementBean.java | 13 - .../bean/dddelement/PackageElementBean.java | 12 - .../dddelement/RepositoryElementBean.java | 14 - .../dddelement/ValueObjectElementBean.java | 14 - .../ControllerElementBean.java | 16 - .../DoBoConvertElementBean.java | 16 - .../Dto2DtoConvertElementBean.java | 16 - .../DtoBoConvertElementBean.java | 16 - .../bean/dddelementderive/DtoElementBean.java | 16 - .../dddelementderive/EnumElementBean.java | 16 - .../dddelementderive/FacadeElementBean.java | 16 - .../FacadeImplElementBean.java | 16 - .../FeignControllerElementBean.java | 16 - .../dddelementderive/FeignElementBean.java | 16 - .../GatawayImplElementBean.java | 16 - .../InfrastAclImplElementBean.java | 16 - .../RepositoryImplElementBean.java | 16 - .../VoBoConvertElementBean.java | 16 - .../bean/dddelementderive/VoElementBean.java | 14 - .../bean/invoke/InvokeContextBean.java | 252 ------- .../codemaker/bean/invoke/InvokeRowBean.java | 212 ------ .../bean/plantuml/AbstractClassBean.java | 605 --------------- .../bean/plantuml/AnnotationBean.java | 12 - .../codemaker/bean/plantuml/ClassBean.java | 27 - .../codemaker/bean/plantuml/EnumBean.java | 82 --- .../bean/plantuml/ExtendFieldBean.java | 111 --- .../codemaker/bean/plantuml/FieldBean.java | 352 --------- .../bean/plantuml/InterfaceBean.java | 26 - .../codemaker/bean/plantuml/MethodBean.java | 693 ------------------ .../codemaker/bean/plantuml/PackageBean.java | 51 -- .../bean/plantuml/PlantUmlContextBean.java | 176 ----- .../coderman/codemaker/enums/ClassEnum.java | 25 - .../codemaker/enums/ClassRelationEnum.java | 119 --- .../codemaker/enums/CompTypeEnum.java | 33 - .../enums/DomainDerivedElementEnum.java | 40 - .../codemaker/enums/DomainElementEnum.java | 60 -- .../enums/MethodReturnClassTypeEnum.java | 69 -- .../coderman/codemaker/enums/ModuleEnum.java | 400 ---------- .../codemaker/enums/TemplateFileEnum.java | 101 --- .../codemaker/enums/VisibilityEnum.java | 57 -- .../enums/dynamic/DecorateTypeEnum.java | 37 - .../enums/dynamic/InvokeLayerTypeEnum.java | 120 --- .../enums/dynamic/InvokeSceneTypeEnum.java | 137 ---- .../enums/dynamic/ReadWriteTypeEnum.java | 155 ---- .../codemaker/utils/StringHandleUtils.java | 133 ---- .../codemaker/utils/StringHelperUtils.java | 88 --- .../codemaker/enums/CodeSegmentEnum.java | 37 + .../app/cola/ColaAdapterWriteServiceImpl.java | 81 -- .../app/cola/ColaAppWriteServiceImpl.java | 84 --- .../app/cola/ColaClientWriteServiceImpl.java | 110 --- .../app/cola/ColaDomainWriteServiceImpl.java | 110 --- .../cola/ColaFeignApiWriteServiceImpl.java | 101 --- .../app/cola/ColaInfrastWriteServiceImpl.java | 263 ------- .../codemaker/app/ColaAppService.java | 21 +- .../app/cola/ColaAdapterWriteServiceImpl.java | 48 ++ .../app/cola/ColaApiDocWriteServiceImpl.java | 31 +- .../app/cola/ColaAppWriteServiceImpl.java | 49 ++ .../app/cola/ColaClientWriteServiceImpl.java | 44 ++ .../app/cola/ColaDomainWriteServiceImpl.java | 45 ++ .../cola/ColaFeignApiWriteServiceImpl.java | 43 ++ .../app/cola/ColaInfrastWriteServiceImpl.java | 48 ++ .../app/cola/ColaStartWriteServiceImpl.java | 37 +- 94 files changed, 369 insertions(+), 7206 deletions(-) delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompDecorateService.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompRegistService.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompScanService.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ClassContentBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ColumnBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GeneratorSettingBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GlobalConstant.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/MapperMethodConstant.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/TableBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/WriteContentBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiDocBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiModuleBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiParamBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentConfigBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentContextBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AclElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AggregateElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AppListenerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CacheElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CommandElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainBoElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainEventElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainMsgBodyElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ExecutorElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/FactoryElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/GatawayElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/InfrastAclElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqConsumerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqHandlerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqProducerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/PackageElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/RepositoryElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ValueObjectElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/ControllerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DoBoConvertElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/EnumElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeImplElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignControllerElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/GatawayImplElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/RepositoryImplElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoBoConvertElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoElementBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeContextBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeRowBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AbstractClassBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AnnotationBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ClassBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/EnumBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ExtendFieldBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/FieldBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/InterfaceBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/MethodBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PackageBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PlantUmlContextBean.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassRelationEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/CompTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainDerivedElementEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainElementEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/MethodReturnClassTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ModuleEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/TemplateFileEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/VisibilityEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/DecorateTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeLayerTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeSceneTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/ReadWriteTypeEnum.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHandleUtils.java delete mode 100644 codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHelperUtils.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeSegmentEnum.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAdapterWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAppWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaClientWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaDomainWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaInfrastWriteServiceImpl.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/ColaAppService.java (70%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAdapterWriteServiceImpl.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/cola/ColaApiDocWriteServiceImpl.java (33%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAppWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaClientWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaDomainWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaInfrastWriteServiceImpl.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/cola/ColaStartWriteServiceImpl.java (42%) diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompDecorateService.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompDecorateService.java deleted file mode 100644 index 01d9848..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompDecorateService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.coderman.codemaker.api; - -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; - -/** - * Description: 组件规则定义完成之后,需要将 - * 组件包相关的类接口枚举注解等应用到对应的代码元素上 - * date: 2021/11/23 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@FunctionalInterface -public interface ICompDecorateService { - /** - * 组件上下文与代码模型上下文进行融合,对相关的代码元素做包装和装饰 - * @param componentContextBean 组件上下文 - * @param plantUmlContextBean 代码元素模型上下文 - */ - void decorateComp(ComponentContextBean componentContextBean, PlantUmlContextBean plantUmlContextBean); -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompRegistService.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompRegistService.java deleted file mode 100644 index 546dbbc..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompRegistService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.coderman.codemaker.api; - -import com.coderman.codemaker.bean.component.ComponentContextBean; - -/** - * Description:组件注册服务接口,这里主要用来将相对独立的工具类注册到组件中 - * 整体的独立类当作一个组件看待,独立工具类配置在/component/single-class文件夹 - * 中,一个独立类一个配置。 - * - * 由于独立类的注入扫描比较简单,这里相当于一个默认的实现,不需要用户二次开发 - * 用户只需要配置即可将独立的工具类应用在调用时序图文档里,并在生成的代码中被引用到 - * - * date: 2021/12/24 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public interface ICompRegistService { - /** - * 将独立工具类的配置列表扫描并注册为组件 - * @return - */ - ComponentContextBean registSingleClass(); -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompScanService.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompScanService.java deleted file mode 100644 index 3cbdc2d..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/api/ICompScanService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.coderman.codemaker.api; - -import com.coderman.codemaker.bean.component.ComponentContextBean; - -import java.util.List; -import java.util.Map; - -/** - * Description:组件扫描注册服务类 - * - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@FunctionalInterface -public interface ICompScanService { - /** - * 组件扫描核心接口 - * @return - */ - Map scanComponent(List componentList); -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ClassContentBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ClassContentBean.java deleted file mode 100644 index 9f36bf7..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ClassContentBean.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.coderman.codemaker.bean; - -/** - * Description: - * date: 2021/6/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ClassContentBean { - /** - * 文件内容 - */ - private String classContent; - - /** - * 文件路径 - */ - private String classFilePath; - - - private String childPackageName; - - private String classSuffix; - - private String humpClassName; - - /** - * 类所在包名,包括子包 - */ - private String classPackageName; - - /** - * 所属模块 - */ - private String modulePath; - - public String getModulePath() { - return modulePath; - } - - public void setModulePath(String modulePath) { - this.modulePath = modulePath; - } - - public String getClassPackageName() { - return classPackageName; - } - - public void setClassPackageName(String classPackageName) { - this.classPackageName = classPackageName; - } - - public String getChildPackageName() { - return childPackageName; - } - - public void setChildPackageName(String childPackageName) { - this.childPackageName = childPackageName; - } - - public String getClassSuffix() { - return classSuffix; - } - - public void setClassSuffix(String classSuffix) { - this.classSuffix = classSuffix; - } - - public String getClassFilePath() { - return classFilePath; - } - - public void setClassFilePath(String classFilePath) { - this.classFilePath = classFilePath; - } - - public String getHumpClassName() { - return humpClassName; - } - - public void setHumpClassName(String humpClassName) { - this.humpClassName = humpClassName; - } - - public String getClassContent() { - return classContent; - } - - public void setClassContent(String classContent) { - this.classContent = classContent; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ColumnBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ColumnBean.java deleted file mode 100644 index 5492059..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/ColumnBean.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.coderman.codemaker.bean; - -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.enums.VisibilityEnum; - -/** - * Created on 2018-7-19. - * - * @author: coderman - * @version: V1.0 - * @Desc: 表字段描述 - */ -public class ColumnBean { - /** - * 表名 - */ - private String tableName; - /** - * 字段名 - */ - private String columnName; - /** - * 默认值 - */ - private String columnDefaultValue; - /** - * 数据类型 - */ - private String dataType; - /** - * 字段特殊描述值 - */ - private String extraInfo; - /** - * 是否是主键(或者其他键) - */ - private String columnKey; - - /** - * 是否可以为空,NO,YES - */ - private String isNullable; - - /** - * 字段类型 - */ - private String columnType; - - /** - * 字段描述 - */ - private String columnComment; - - /** - * 字段类型对应的javaentity的类型名 - */ - private String columnTypeName; - - /** - * 字段对应的javaentity属性名 - */ - private String columnFieldName; - - /** - * 字段对应的mybatis resultMap的jdbc类型 - */ - private String columnJdbcTypeName; - - /** - * 字段对应的大写类名 - */ - private String columnUperName; - - public String getColumnUperName() { - return columnUperName; - } - - public void setColumnUperName(String columnUperName) { - this.columnUperName = columnUperName; - } - - public String getColumnJdbcTypeName() { - return columnJdbcTypeName; - } - - public void setColumnJdbcTypeName(String columnJdbcTypeName) { - this.columnJdbcTypeName = columnJdbcTypeName; - } - - public String getColumnTypeName() { - return columnTypeName; - } - - public void setColumnTypeName(String columnTypeName) { - this.columnTypeName = columnTypeName; - } - - public String getColumnFieldName() { - return columnFieldName; - } - - public void setColumnFieldName(String columnFieldName) { - this.columnFieldName = columnFieldName; - } - - public String getTableName() { - - return tableName; - } - - public void setTableName(String tableName) { - this.tableName = tableName; - } - - public String getColumnName() { - return columnName; - } - - public void setColumnName(String columnName) { - this.columnName = columnName; - } - - public String getColumnDefaultValue() { - return columnDefaultValue; - } - - public void setColumnDefaultValue(String columnDefaultValue) { - this.columnDefaultValue = columnDefaultValue; - } - - public String getDataType() { - return dataType; - } - - public void setDataType(String dataType) { - this.dataType = dataType; - } - - public String getExtraInfo() { - return extraInfo; - } - - public void setExtraInfo(String extraInfo) { - this.extraInfo = extraInfo; - } - - public String getColumnKey() { - return columnKey; - } - - public void setColumnKey(String columnKey) { - this.columnKey = columnKey; - } - - public String getIsNullable() { - return isNullable; - } - - public void setIsNullable(String isNullable) { - this.isNullable = isNullable; - } - - public String getColumnType() { - return columnType; - } - - public void setColumnType(String columnType) { - this.columnType = columnType; - } - - public String getColumnComment() { - return columnComment; - } - - public void setColumnComment(String columnComment) { - this.columnComment = columnComment; - } - - @Override - public String toString() { - return "ColumnBean{" + - "tableName='" + tableName + '\'' + - ", columnName='" + columnName + '\'' + - ", columnDefaultValue='" + columnDefaultValue + '\'' + - ", dataType='" + dataType + '\'' + - ", extraInfo='" + extraInfo + '\'' + - ", columnKey='" + columnKey + '\'' + - ", isNullable='" + isNullable + '\'' + - ", columnType='" + columnType + '\'' + - ", columnComment='" + columnComment + '\'' + - '}'; - } - - public FieldBean convert2FieldBean(){ - FieldBean fieldBean = new FieldBean(); - fieldBean.setDesc(columnComment); - fieldBean.setVisibility(VisibilityEnum.PRIVATE.getVisibility()); - fieldBean.setDbColumnName(columnName); - fieldBean.setFieldName(columnTypeName+" "+ columnFieldName); - return fieldBean; - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GeneratorSettingBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GeneratorSettingBean.java deleted file mode 100644 index e3f087d..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GeneratorSettingBean.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.coderman.codemaker.bean; - - -/** - * @Description:类配置信息,后期存储在数据库或配置文件中 - * @Author:coderman - * @CreateTime:2018年8月28日下午11:19:41 - * @version v1.0 - */ -@Deprecated -public class GeneratorSettingBean { - - private String ftlFilePath; - private String javaFileSubPackage; - private String javaFileSuffix; - private String javaFileName; - private String fileKey; - - - public GeneratorSettingBean() {} - public GeneratorSettingBean(String ftlFilePath, String javaFileSubPackage, String javaFileName) { - this.ftlFilePath = ftlFilePath; - this.javaFileSubPackage = javaFileSubPackage; - this.javaFileName = javaFileName; - } - - public String getFtlFilePath() { - return ftlFilePath; - } - - public void setFtlFilePath(String ftlFilePath) { - this.ftlFilePath = ftlFilePath; - } - - public String getJavaFileSubPackage() { - return javaFileSubPackage; - } - - public void setJavaFileSubPackage(String javaFileSubPackage) { - this.javaFileSubPackage = javaFileSubPackage; - } - - public String getJavaFileSuffix() { - return javaFileSuffix; - } - - public void setJavaFileSuffix(String javaFileSuffix) { - this.javaFileSuffix = javaFileSuffix; - } - - public String getJavaFileName() { - return javaFileName; - } - - public void setJavaFileName(String javaFileName) { - this.javaFileName = javaFileName; - } - - public String getFileKey() { - return fileKey; - } - - public void setFileKey(String fileKey) { - this.fileKey = fileKey; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GlobalConstant.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GlobalConstant.java deleted file mode 100644 index 521a58c..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/GlobalConstant.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.coderman.codemaker.bean; - -/** - * Description: - * date: 2021/7/12 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class GlobalConstant { - /** - * plantuml bo中的特殊属性-标示bo-table的对应关系 - */ - public static final String TABLE_KEY = "tablekey"; - - /** - * plantuml bo中的特殊属性-标示dto别名 - */ - public static final String DTO_KEY_LIST = "dtokeylist"; - - /** - * plantuml bo中的特殊属性-标示facade接口名称 - */ - public static final String FACADE_KEY = "facadekey"; - - /** - * plantuml bo中的特殊属性-标示vo类名 - */ - public static final String VO_KEY_LIST = "vokeylist"; - - /** - * plantuml bo中的特殊属性-标示controller类名 - */ - public static final String CONTROLLER_KEY = "controllerkey"; - - - /** - * plantuml enum中的特殊属性-标示enum要复制到rpc client模块中 - */ - public static final String COPY2RPC_CLIENT_KEY = "torpcclient"; - - - /** - * plantuml invoke动态调用流程图的链路标示 - */ - public static final String INVOKE_TAG = "invoke"; - - - - /** - * plantuml bo中的特殊属性-标示BO对应的业务方法调用流程 - */ - public static final String INVOKE_FILE_KEY = "invokefilekey"; - - /** - * plantuml bo中的特殊属性-标示BO对象是哪个上下文的,帮助按上下文分包 - */ - public static final String CONTEXT_KEY = "contextkey"; - - - - /** - * plantuml bo中的特殊属性-标示BO对象的派生查询dto - */ - public static final String QUERY_DTO_KEY = "querydtokey"; - - - - /** - * plantuml bo中的特殊属性-标示BO对象的派生查询vo - */ - public static final String QUERY_VO_KEY = "queryvokey"; - - - /** - * plantuml bo中的特殊属性-标示BO对象需要导出参数到下游哪个服务的哪个接口做防腐适配 - */ - public static final String EXPORT_ACL_KEY = "exportaclkey"; - - - - - /** - * 调用时序文档存储文件夹名称 - */ - public static final String INVOKE_SEQUENCE_FILE_DIR = "invoke-plantuml"; - - - /** - * 领域类图模型文档存储文件夹名称 - */ - public static final String DOMAIN_MODLE_FILE_DIR = "ddd-plantuml"; - - - /** - * 以!开头的则忽略解析 - */ - public static final String PLANT_DOC_IGNORE = "!"; - - - /** - * api doc文件名称 - */ - public static final String API_DOC = "api-doc"; - - - public static final String PACKAGE_$ = "${package}"; - - /** - * 存放工具类 独立类的文件目录名 - */ - public static final String SINGLE_CLASS_COMMON = "singleClass"; - - /** - * 组件配置文件key--version - */ - public static final String COMP_VERSION="version"; - - /** - * 组件配置文件key--groupId - */ - public static final String COMP_GROUPID="groupId"; - - /** - * 组件配置文件key--artifactId - */ - public static final String COMP_ARTIFACTID="artifactId"; - - - /** - * 组件包扫描的包名称 - */ - public static final String COMP_PACKAGE = "packageName"; - - /** - * 组件代表的服务别名 - */ - public static final String COMP_SERVICE_NAME = "serviceName"; - - - /** - * 组件官网 - */ - public static final String COMP_SITE = "compSite"; - - /** - * 组件简述 - */ - public static final String COMP_DESC = "compDesc"; - - - /** - * 组件类型 - */ - public static final String COMP_TYPE = "compType"; - - /** - * 独立类-类型 - */ - public static final String COMP_SINGLE_CLASS_TYPE = "classType"; - - /** - * 需要扫描的类列表前缀 - */ - public static final String COMP_CLASS_PRE = "class"; - - - /** - * 需要扫描的接口列表前缀 - */ - public static final String COMP_INTERFACE_PRE = "interface"; - - /** - * 需要扫描的枚举列表前缀 - */ - public static final String COMP_ENUM_PRE = "enum"; - - /** - * 需要扫描的方法列表前缀 - */ - public static final String COMP_CLASS_METHOD_PRE = "method"; - - /** - * 需要扫描的注解列表前缀 - */ - public static final String COMP_ANNOTATION_PRE = "annotation"; - - - /** - * 扫描组件的文件前缀 - */ - public static final String COMP_COMPONENT_PATH_PRE = "/component/"; - - /** - * 独立类组件扫描路径 - */ - public static final String COMP_COMPONENT_SINGLE_CLASS_PATH = COMP_COMPONENT_PATH_PRE + "singleClass"; - - /** - * 配置的包依赖 - */ - public static final String CLASS_IMPORT_FILE = "/class-import.properties"; - - - - - public static final String REQUEST_DTO = "requestdto"; - public static final String RESPONSE_DTO = "responsedto"; - - - public static final String REQUEST_VO = "requestvo"; - public static final String RESPONSE_VO = "responsevo"; -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/MapperMethodConstant.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/MapperMethodConstant.java deleted file mode 100644 index aad3bfd..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/MapperMethodConstant.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.coderman.codemaker.bean; - -import java.util.HashSet; -import java.util.Set; - -/** - * Description: mapperxml默认方法名 - * date: 2021/10/27 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class MapperMethodConstant { - public static final String INSERT = "insert"; - public static final String UPDATE = "update"; - public static final String GET_BYID = "getById"; - public static final String GET_ALL = "getAll"; - public static final String DELETE_BYID = "deleteById"; - public static Set defaultMethodSet(){ - Set set = new HashSet<>(); - set.add(INSERT); - set.add(UPDATE); - set.add(DELETE_BYID); - set.add(GET_ALL); - set.add(GET_BYID); - - return set; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/TableBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/TableBean.java deleted file mode 100644 index 177601f..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/TableBean.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.coderman.codemaker.bean; - -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.google.common.collect.Lists; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created on 2018-7-19. - * - * @author: fanchunshuai - * @version: V1.0 - * @Desc:表信息描述 - */ -public class TableBean { - /** - * 表名 - */ - private String tableName; - /** - * 表描述 - */ - private String tableComment; - - - /** - * 使用的存储引擎 - */ - private String engineName; - - /** - * 字符集 - */ - private String tableCollation; - - /** - * 表记录数 - */ - private Long tableRows; - - /** - * 表名对应的驼峰式命名 - */ - private String humpTableName; - - /** - * 表名对应的类名 - */ - private String humpClassName; - /** - * 列名列表,字符串逗号分割 - */ - private String columnNameList; - - /** - * 插入sql value替换字符串 - */ - private String insertColumnNameList; - - /** - * 插入sql value替换字符串 - */ - private String insertColumnNames; - /** - * 修改sql value替换字符串 - */ - private String updateColumnNameList; - - - /** - * 转换对应的class信息,打通dynamicddd派生类生成 - */ - private ClassBean classBean; - - /** - * 将tablebean对象转换为classBean对象,代表DO类对象 - * @param packageName - * @param columnBeanList - * @return - */ - public ClassBean convertToClassBean(String packageName,List columnBeanList){ - ClassBean classBean = new ClassBean(); - classBean.setClassName(this.getHumpClassName()+"DO"); - classBean.setPackageName(packageName); - classBean.setClassDesc(tableComment); - classBean.setPlantUMLPackage("dao.dataobject"); - - classBean.setMethodBeanList(Lists.newArrayList()); - classBean.setTableBean(this); - classBean.setColumnBeanList(columnBeanList); - - if(CollectionUtils.isNotEmpty(columnBeanList)){ - List fieldBeanList = new ArrayList<>(); - columnBeanList.forEach(columnBean -> fieldBeanList.add(columnBean.convert2FieldBean())); - classBean.setFieldBeanList(fieldBeanList); - }else { - classBean.setFieldBeanList(Lists.newArrayList()); - } - return classBean; - } - - /** - * 将mapper层整体注册到plantUmlContextBean 上下文中 - * @param packageName - * @return - */ - public InterfaceBean convertToMapperInterface(String packageName,List columnBeanList){ - InterfaceBean interfaceBean = new InterfaceBean(); - interfaceBean.setClassName(this.getHumpClassName()+"Mapper"); - interfaceBean.setPackageName(packageName); - interfaceBean.setClassDesc(tableComment); - interfaceBean.setPlantUMLPackage("dao.mapper"); - String doPackageName = packageName.replace("mapper","dataobject"); - String importDO = doPackageName+"."+this.getHumpClassName()+"DO"; - interfaceBean.setImportClassList(Lists.newArrayList(importDO)); - interfaceBean.setMethodBeanList(getDefaultMapperMethod()); - interfaceBean.setTableBean(this); - interfaceBean.setColumnBeanList(columnBeanList); - - - return interfaceBean; - } - - public ClassBean getClassBean() { - - return classBean; - } - - public void setClassBean(ClassBean classBean) { - this.classBean = classBean; - } - - public String getInsertColumnNames() { - return insertColumnNames; - } - - public void setInsertColumnNames(String insertColumnNames) { - this.insertColumnNames = insertColumnNames; - } - - public String getUpdateColumnNameList() { - return updateColumnNameList; - } - - public void setUpdateColumnNameList(String updateColumnNameList) { - this.updateColumnNameList = updateColumnNameList; - } - - public String getInsertColumnNameList() { - return insertColumnNameList; - } - - public void setInsertColumnNameList(String insertColumnNameList) { - this.insertColumnNameList = insertColumnNameList; - } - - public String getColumnNameList() { - return columnNameList; - } - - public void setColumnNameList(String columnNameList) { - this.columnNameList = columnNameList; - } - - public String getHumpClassName() { - return humpClassName; - } - - public void setHumpClassName(String humpClassName) { - this.humpClassName = humpClassName; - } - - public String getHumpTableName() { - return humpTableName; - } - - public void setHumpTableName(String humpTableName) { - this.humpTableName = humpTableName; - } - - public Long getTableRows() { - return tableRows; - } - - public void setTableRows(Long tableRows) { - this.tableRows = tableRows; - } - - public String getTableName() { - return tableName; - } - - public void setTableName(String tableName) { - this.tableName = tableName; - } - - public String getTableComment() { - return tableComment; - } - - public void setTableComment(String tableComment) { - this.tableComment = tableComment; - } - - public String getEngineName() { - return engineName; - } - - public void setEngineName(String engineName) { - this.engineName = engineName; - } - - public String getTableCollation() { - return tableCollation; - } - - public void setTableCollation(String tableCollation) { - this.tableCollation = tableCollation; - } - - - public List getDefaultMapperMethod(){ - List methodBeanList = new ArrayList<>(); - String paramType = this.getHumpClassName()+"DO"; - String varName = paramType.substring(0,1).toLowerCase()+paramType.substring(1); - methodBeanList.add(new MethodBean("insert("+paramType+" "+varName+")","long","保存数据记录")); - methodBeanList.add(new MethodBean("update("+paramType+" "+varName+")","int","更新数据记录")); - methodBeanList.add(new MethodBean("getAll()","List<"+paramType+">","获取所有数据记录")); - methodBeanList.add(new MethodBean("getById(Long id)",paramType,"根据ID获取单条记录")); - methodBeanList.add(new MethodBean("deleteById(Long id)","int","根据ID删除单条记录")); - methodBeanList.stream().forEach(methodBean -> methodBean.buildParamArr()); - return methodBeanList; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/WriteContentBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/WriteContentBean.java deleted file mode 100644 index 23fa973..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/WriteContentBean.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.coderman.codemaker.bean; - -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import lombok.Builder; -import lombok.Data; - -/** - * Description: - * date: 2021/7/2 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Builder -@Data -public class WriteContentBean { - private String templateName; - private String content; - private String humpClassName; - private String classPackageName; - - private AbstractClassBean abstractClassBean; - - public AbstractClassBean getAbstractClassBean() { - return abstractClassBean; - } - - public void setAbstractClassBean(AbstractClassBean abstractClassBean) { - this.abstractClassBean = abstractClassBean; - } - - public String getTemplateName() { - return templateName; - } - - public void setTemplateName(String templateName) { - this.templateName = templateName; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public String getHumpClassName() { - return humpClassName; - } - - public void setHumpClassName(String humpClassName) { - this.humpClassName = humpClassName; - } - - /** - * 将writeContentbean对象转换为classcontentBean对象 - * @return - */ - public ClassContentBean buildClassContentBean(String modulePath){ - ClassContentBean classContentBean = new ClassContentBean(); - classContentBean.setClassContent(this.getContent()); - classContentBean.setHumpClassName(this.getHumpClassName()); - classContentBean.setClassPackageName(this.getClassPackageName()); - classContentBean.setClassSuffix(""); - classContentBean.setModulePath(modulePath); - return classContentBean; - } - - - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiDocBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiDocBean.java deleted file mode 100644 index d5a3d32..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiDocBean.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.coderman.codemaker.bean.apidoc; - -import java.util.List; - -/** - * Description: 支持http rpc的接口文档模型 - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ApiDocBean { - - /** - * 接口名称 - * controller--method a/b/c - * rpc---method - */ - private String interfaceName; - - /** - * 参数列表 - */ - private List paramBeanList; - - /** - * 接口文档描述 - */ - private String interfaceDesc; - - /** - * 返回值类信息 - */ - private String returnClass; - - - /** - * 入参json 案例 - */ - private String paramJsonDemo; - - - /** - * 出参json 案例 - */ - private String returnJsonDemo; - - /** - * http接口的访问路径 - */ - private String httpPath; - - public String getHttpPath() { - return httpPath; - } - - public void setHttpPath(String httpPath) { - this.httpPath = httpPath; - } - - public String getInterfaceName() { - return interfaceName; - } - - public void setInterfaceName(String interfaceName) { - this.interfaceName = interfaceName; - } - - public List getParamBeanList() { - return paramBeanList; - } - - public void setParamBeanList(List paramBeanList) { - this.paramBeanList = paramBeanList; - } - - public String getInterfaceDesc() { - return interfaceDesc; - } - - public void setInterfaceDesc(String interfaceDesc) { - this.interfaceDesc = interfaceDesc; - } - - public String getReturnClass() { - return returnClass; - } - - public void setReturnClass(String returnClass) { - this.returnClass = returnClass; - } - - public String getParamJsonDemo() { - return paramJsonDemo; - } - - public void setParamJsonDemo(String paramJsonDemo) { - this.paramJsonDemo = paramJsonDemo; - } - - public String getReturnJsonDemo() { - return returnJsonDemo; - } - - public void setReturnJsonDemo(String returnJsonDemo) { - this.returnJsonDemo = returnJsonDemo; - } - - - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiModuleBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiModuleBean.java deleted file mode 100644 index 5782ef2..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiModuleBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.apidoc; - -/** - * Description:模块/接口类级别的文档描述 - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ApiModuleBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiParamBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiParamBean.java deleted file mode 100644 index 7e7dce1..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/apidoc/ApiParamBean.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.coderman.codemaker.bean.apidoc; - -/** - * Description: - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ApiParamBean { - /** - * 属性名称 - */ - private String fieldName; - - /** - * 属性类型 - */ - private String fieldType; - - /** - * 属性描述 - */ - private String fieldDesc; - - /** - * 是否可为空 - */ - private String nullable; - - public String getFieldName() { - return fieldName; - } - - public void setFieldName(String fieldName) { - this.fieldName = fieldName; - } - - public String getFieldType() { - return fieldType; - } - - public void setFieldType(String fieldType) { - this.fieldType = fieldType; - } - - public String getFieldDesc() { - return fieldDesc; - } - - public void setFieldDesc(String fieldDesc) { - this.fieldDesc = fieldDesc; - } - - public String getNullable() { - return nullable; - } - - public void setNullable(String nullable) { - this.nullable = nullable; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentConfigBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentConfigBean.java deleted file mode 100644 index b500b20..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentConfigBean.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.coderman.codemaker.bean.component; - - -import org.apache.commons.lang3.StringUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ComponentConfigBean { - - /** - * maven GAV - */ - private String artifactId; - - private String groupId; - - private String version; - - private String desc; - - /** - * 如果GAV找不到则通过jarPath找 - */ - private String jarPath; - - /** - * 目标类所在的包名 - */ - private String packageName; - - /** - * 组件代表的别名 - */ - private String serviceName; - - /** - * 组件类型--CompTypeEnum - */ - private String compType; - - /** - * 类-类型 - */ - private String classType; - - - /** - * 组件官网 - */ - private String compSite; - - /** - * 组件描述 - */ - private String compDesc; - - /** - * 接口列表 - */ - private List interfaceList = new ArrayList<>(); - - /** - * 类列表 - */ - private List classList = new ArrayList<>(); - - /** - * 枚举列表 - */ - private List enumList = new ArrayList<>(); - - /** - * 注解列表 - */ - private List annotationList = new ArrayList<>(); - - /** - * 方法列表 - */ - private List methodList = new ArrayList<>(); - - public String getArtifactId() { - return artifactId; - } - - public void setArtifactId(String artifactId) { - this.artifactId = artifactId; - } - - public String getGroupId() { - return groupId; - } - - public void setGroupId(String groupId) { - this.groupId = groupId; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getJarPath() { - return jarPath; - } - - public void setJarPath(String jarPath) { - this.jarPath = jarPath; - } - - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public List getInterfaceList() { - return interfaceList; - } - - public List getClassList() { - return classList; - } - - public String getClassType() { - return classType; - } - - public void setClassType(String classType) { - this.classType = classType; - } - - - public List getMethodList() { - return methodList; - } - - public List getEnumList() { - return enumList; - } - - public List getAnnotationList() { - return annotationList; - } - - public String getCompSite() { - return compSite; - } - - public void setCompSite(String compSite) { - this.compSite = compSite; - } - - public String getCompDesc() { - return compDesc; - } - - public void setCompDesc(String compDesc) { - this.compDesc = compDesc; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - - public String getCompType() { - return compType; - } - - public void setCompType(String compType) { - this.compType = compType; - } - - public void addClass(String clazz){ - if(StringUtils.isNotEmpty(this.getPackageName())){ - clazz = this.getPackageName()+"."+clazz; - } - this.classList.add(clazz); - } - - public void addInterface(String interfaceName){ - if(StringUtils.isNotEmpty(this.getPackageName())){ - interfaceName = this.getPackageName()+"."+interfaceName; - } - this.interfaceList.add(interfaceName); - } - - public void addAnnotation(String annotation){ - if(StringUtils.isNotEmpty(this.getPackageName())){ - annotation = this.getPackageName()+"."+annotation; - } - this.annotationList.add(annotation); - } - - - public void addEnum(String enumClass){ - if(StringUtils.isNotEmpty(this.getPackageName())){ - enumClass = this.getPackageName()+"."+enumClass; - } - this.enumList.add(enumClass); - } - - public void addMethod(String methodStr){ - if(StringUtils.isNotEmpty(methodStr)){ - this.methodList.add(methodStr); - } - } - - - /** - * 构建需要读取的jar包绝对路径,带jar的 - * @return - */ - public String buildRepoJarPath(String mvnRepoPath){ - String path = mvnRepoPath + "/" + this.getGroupId().replace(".","/")+"/"+this.getArtifactId()+"/"+this.getVersion(); - String jarName = this.getArtifactId()+"-"+this.getVersion()+".jar"; - return path + "/" + jarName+"!/"; - } - - /** - * 构建需要读取的jar包绝对路径 - * @return - */ - public String buildJarPath(String mvnRepoPath){ - String path = mvnRepoPath.replace("jar:file://","") + "/" + this.getGroupId().replace(".","/")+"/"+this.getArtifactId()+"/"+this.getVersion(); - String jarName = this.getArtifactId()+"-"+this.getVersion()+".jar"; - return path + "/" + jarName; - } - - @Override - public String toString() { - return "ComponentConfigBean{" + - "artifactId='" + artifactId + '\'' + - ", groupId='" + groupId + '\'' + - ", version='" + version + '\'' + - ", desc='" + desc + '\'' + - ", jarPath='" + jarPath + '\'' + - ", packageName='" + packageName + '\'' + - ", serviceName='" + serviceName + '\'' + - ", compType='" + compType + '\'' + - ", classType='" + classType + '\'' + - ", compSite='" + compSite + '\'' + - ", compDesc='" + compDesc + '\'' + - '}'; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentContextBean.java deleted file mode 100644 index e47afc7..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/component/ComponentContextBean.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.coderman.codemaker.bean.component; - -import com.coderman.codemaker.bean.plantuml.AnnotationBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.List; -import java.util.Optional; - -/** - * Description:组件上下文bean - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ComponentContextBean { - - /** - * 组件名称---服务名称 - */ - private String componentName; - - /** - * 组件类型--CompTypeEnum - */ - private String compType; - - - /** - * 组件需要暴露的枚举类 - */ - private List enumBeanList; - - /** - * 组件需要暴露的class类 - */ - private List classBeanList; - - /** - * 组件需要暴露的接口类 - */ - private List interfaceBeanList; - - /** - * 注解列表 - */ - private List annotationList; - - public List getAnnotationList() { - return annotationList; - } - - public void setAnnotationList(List annotationList) { - this.annotationList = annotationList; - } - - public String getComponentName() { - return componentName; - } - - public void setComponentName(String componentName) { - this.componentName = componentName; - } - - public List getEnumBeanList() { - return enumBeanList; - } - - public void setEnumBeanList(List enumBeanList) { - this.enumBeanList = enumBeanList; - } - - public List getClassBeanList() { - return classBeanList; - } - - public void setClassBeanList(List classBeanList) { - this.classBeanList = classBeanList; - } - - public List getInterfaceBeanList() { - return interfaceBeanList; - } - - public void setInterfaceBeanList(List interfaceBeanList) { - this.interfaceBeanList = interfaceBeanList; - } - - public String getCompType() { - return compType; - } - - public void setCompType(String compType) { - this.compType = compType; - } - - @Override - public String toString() { - return "ComponentContextBean{" + - "componentName='" + componentName + '\'' + - ", enumBeanList=" + enumBeanList + - ", classBeanList=" + classBeanList + - ", interfaceBeanList=" + interfaceBeanList + - '}'; - } - - /** - * 获取目标注解信息 - * @param annotationClass - * @return - */ - public AnnotationBean getTargetAnnotation(String annotationClass){ - if(CollectionUtils.isEmpty(this.getAnnotationList())){ - return null; - } - Optional annotationBeanOptional = this.getAnnotationList().stream().filter(annotationBean -> annotationBean.getClassName().equals(annotationClass)).findFirst(); - if(annotationBeanOptional.isPresent()){ - return annotationBeanOptional.get(); - } - return null; - } - - - /** - * 获取目标class信息 - * @param className - * @return - */ - public ClassBean getTargetClass(String className){ - if(CollectionUtils.isEmpty(this.getClassBeanList())){ - return null; - } - Optional classBeanOptional = this.getClassBeanList().stream().filter(classBean -> classBean.getClassName().equals(className)).findFirst(); - if(classBeanOptional.isPresent()){ - return classBeanOptional.get(); - } - return null; - } - - /** - * 判断扫描出来的组件是否为空 - * @return - */ - public boolean isEmpty(){ - return CollectionUtils.isEmpty(this.getAnnotationList()) && CollectionUtils.isEmpty(this.getEnumBeanList()) && CollectionUtils.isEmpty(this.getClassBeanList()) && CollectionUtils.isEmpty(this.getInterfaceBeanList()); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AclElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AclElementBean.java deleted file mode 100644 index c9de3a2..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AclElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 防腐层元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class AclElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AggregateElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AggregateElementBean.java deleted file mode 100644 index 72ced9d..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AggregateElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * 聚合根元素 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class AggregateElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AppListenerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AppListenerElementBean.java deleted file mode 100644 index c743178..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/AppListenerElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 监听器元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class AppListenerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CacheElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CacheElementBean.java deleted file mode 100644 index 4d4bbb4..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CacheElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 缓存服务元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class CacheElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CommandElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CommandElementBean.java deleted file mode 100644 index ecc49a9..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/CommandElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description:命令实体 - * date: 2021/7/5 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class CommandElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainBoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainBoElementBean.java deleted file mode 100644 index c4ddfc4..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainBoElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * 业务模块实体,领域实体元素 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DomainBoElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainEventElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainEventElementBean.java deleted file mode 100644 index da5b030..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainEventElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DomainEventElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainMsgBodyElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainMsgBodyElementBean.java deleted file mode 100644 index 1f0cb6f..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DomainMsgBodyElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/30 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DomainMsgBodyElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperElementBean.java deleted file mode 100644 index 6a87851..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * - * 动态mapper元素 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DynamicMapperElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java deleted file mode 100644 index 8547c78..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * - * 动态mapperxml元素 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DynamicMapperXmlElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ElementBean.java deleted file mode 100644 index 5f811e4..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ElementBean.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -import com.coderman.codemaker.bean.plantuml.*; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public abstract class ElementBean { - protected String packageName; - protected List classBeanList; - protected List interfaceBeanList; - protected List enumBeanList; - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public List getClassBeanList() { - return classBeanList; - } - - public void setClassBeanList(List classBeanList) { - this.classBeanList = classBeanList; - } - - public List getInterfaceBeanList() { - return interfaceBeanList; - } - - public void setInterfaceBeanList(List interfaceBeanList) { - this.interfaceBeanList = interfaceBeanList; - } - - public List getEnumBeanList() { - return enumBeanList; - } - - public void setEnumBeanList(List enumBeanList) { - this.enumBeanList = enumBeanList; - } - - - /** - * 动态调用执行之后再次更新代码元素内容 - * @param plantUmlContextBean - * @param elementType - */ - public ElementBean refreshClass(PlantUmlContextBean plantUmlContextBean,String elementType){ - List newClassBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(elementType.contains(",")){ - String [] elementArr = elementType.split(","); - for (String str : elementArr){ - if(v.getClassName().toLowerCase().endsWith(str)){ - newClassBeanList.add(v); - break; - } - } - }else{ - if(v.getClassName().toLowerCase().endsWith(elementType)){ - newClassBeanList.add(v); - } - } - - }); - if(plantUmlContextBean.getDerivedPlantUmlContextBean() != null){ - plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(elementType)){ - newClassBeanList.add(v); - } - }); - } - - - for (ClassBean classBean : newClassBeanList){ - if(!classBean.getClassName().endsWith("Impl")){ - List methodBeanList = new ArrayList<>(); - for (MethodBean oldBean : classBean.getMethodBeanList()){ - StringBuilder contentBuilder = new StringBuilder(""); - if(!CollectionUtils.isEmpty(oldBean.getInvokeMethodList())){ - for (String str : oldBean.getInvokeMethodList()){ - contentBuilder.append(" "+str+";\n"); - } - } - methodBeanList.add(oldBean.copySelf(contentBuilder.toString())); - } - classBean.setMethodBeanList(methodBeanList); - continue; - } - String interfaceName = classBean.getClassName().replace("Impl",""); - InterfaceBean interfaceBean = plantUmlContextBean.getInterfaceBeanMap().get(interfaceName); - if(interfaceBean == null){ - interfaceBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().get(interfaceName); - } - if(interfaceBean == null){ - continue; - } - //构建方法内容 - interfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildMethodContent()); - classBean.mergeImportClass(interfaceBean.getImportClassList()); - classBean.mergeImportClass(interfaceBean.getDynamicImportPackageList()); - classBean.setMethodBeanList(interfaceBean.getMethodBeanList()); - classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); - } - - this.setClassBeanList(newClassBeanList); - return this; - } - - /** - * 动态调用执行之后再次更新代码元素内容 - * @param plantUmlContextBean - * @param elementType - */ - public ElementBean refreshInterface(PlantUmlContextBean plantUmlContextBean,String elementType){ - List newInterfaceBeanList = new ArrayList<>(); - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(elementType)){ - v.getMethodBeanList().forEach(methodBean -> methodBean.refreshMethodName()); - newInterfaceBeanList.add(v); - } - }); - if(plantUmlContextBean.getDerivedPlantUmlContextBean() != null){ - plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(elementType)){ - v.getMethodBeanList().forEach(methodBean -> methodBean.refreshMethodName()); - newInterfaceBeanList.add(v); - } - }); - } - - - this.setInterfaceBeanList(newInterfaceBeanList); - return this; - } - - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ExecutorElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ExecutorElementBean.java deleted file mode 100644 index bc022c1..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ExecutorElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/7/5 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ExecutorElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/FactoryElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/FactoryElementBean.java deleted file mode 100644 index 5918ff8..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/FactoryElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 工厂元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FactoryElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/GatawayElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/GatawayElementBean.java deleted file mode 100644 index 6f4cb6e..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/GatawayElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * - * 领域网关元素 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class GatawayElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/InfrastAclElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/InfrastAclElementBean.java deleted file mode 100644 index 4cdfbb3..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/InfrastAclElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 防腐层元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class InfrastAclElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqConsumerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqConsumerElementBean.java deleted file mode 100644 index 8abaed8..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqConsumerElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 监听器元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class MqConsumerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqHandlerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqHandlerElementBean.java deleted file mode 100644 index 11d1880..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqHandlerElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 监听器元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class MqHandlerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqProducerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqProducerElementBean.java deleted file mode 100644 index 968238e..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/MqProducerElementBean.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * 监听器元素 - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class MqProducerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/PackageElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/PackageElementBean.java deleted file mode 100644 index 2901c78..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/PackageElementBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class PackageElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/RepositoryElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/RepositoryElementBean.java deleted file mode 100644 index c8af717..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/RepositoryElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * date: 2021/6/28 - * - * 仓库元素 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class RepositoryElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ValueObjectElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ValueObjectElementBean.java deleted file mode 100644 index d954283..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelement/ValueObjectElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelement; - -/** - * Description: - * - * 值对象实体 元素 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ValueObjectElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/ControllerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/ControllerElementBean.java deleted file mode 100644 index b2beb00..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/ControllerElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ControllerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DoBoConvertElementBean.java deleted file mode 100644 index ec3c2ed..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DoBoConvertElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DoBoConvertElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java deleted file mode 100644 index 88f6b5b..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素, - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class Dto2DtoConvertElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java deleted file mode 100644 index f8d9d58..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DtoBoConvertElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoElementBean.java deleted file mode 100644 index 5282cc6..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/DtoElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class DtoElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/EnumElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/EnumElementBean.java deleted file mode 100644 index 74e2f2f..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/EnumElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素valueobject.enum派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class EnumElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeElementBean.java deleted file mode 100644 index cac10ec..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FacadeElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeImplElementBean.java deleted file mode 100644 index 4a0f2f9..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FacadeImplElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FacadeImplElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignControllerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignControllerElementBean.java deleted file mode 100644 index db5d14d..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignControllerElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FeignControllerElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignElementBean.java deleted file mode 100644 index 06fd9c3..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/FeignElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FeignElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/GatawayImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/GatawayImplElementBean.java deleted file mode 100644 index 5b361f3..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/GatawayImplElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 由gataway接口派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class GatawayImplElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java deleted file mode 100644 index 681b2b7..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 由infrastacl接口派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class InfrastAclImplElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/RepositoryImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/RepositoryImplElementBean.java deleted file mode 100644 index d4b78f7..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/RepositoryImplElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 由repository接口派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class RepositoryImplElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoBoConvertElementBean.java deleted file mode 100644 index 45ffced..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoBoConvertElementBean.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * 派生元素,由领域实体元素bo派生而来 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class VoBoConvertElementBean extends ElementBean { - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoElementBean.java deleted file mode 100644 index b389516..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/dddelementderive/VoElementBean.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.coderman.codemaker.bean.dddelementderive; - -import com.coderman.codemaker.bean.dddelement.ElementBean; - -/** - * Description: - * date: 2021/7/9 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class VoElementBean extends ElementBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeContextBean.java deleted file mode 100644 index b9fe9fc..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeContextBean.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.coderman.codemaker.bean.invoke; - -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.dynamic.InvokeSceneTypeEnum; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import org.apache.commons.lang3.StringUtils; - - -/** - * Description: 调用时序上下文 - * date: 2021/10/16 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class InvokeContextBean { - /** - * 需要绘制方法内容的方法对象 - * 调用方的方法 - */ - private MethodBean invokerMethodBean; - - /** - * plantuml 调用流程图中的被调用类 - */ - private String providerClassName; - - /** - * plantuml 调用流程图中的被调用方法 - */ - private MethodBean providerClassMethod; - - /** - * plantuml 调用流程图中的调用方法 - */ - private String invokerMethod; - - - /** - * 调用方向 - * 如 应用层->领域层,应用层->基础设施层,应用层->应用层,领域层->领域层 - */ - private String InvokeSceneType; - - /** - * 需要绘制方法内容的方法类型 - */ - private String methodRWType; - - - /** - * 全局对象 - */ - private PlantUmlContextBean plantUmlContextBean; - - /** - * 调用类对象 - */ - private AbstractClassBean invokerClassBean; - - /** - * 被调用类对象 - */ - private AbstractClassBean providerClassBean; - - /** - * 当前调用方调用提供方的调用行内容 - */ - private String currentInvokeRowContent; - - - /** - * 当前调用的调用行bean - */ - private InvokeRowBean currentInvokeRowBean; - - public MethodBean getProviderClassMethod() { - return providerClassMethod; - } - - public void setProviderClassMethod(MethodBean providerClassMethod) { - this.providerClassMethod = providerClassMethod; - } - - public InvokeRowBean getCurrentInvokeRowBean() { - return currentInvokeRowBean; - } - - public void setCurrentInvokeRowBean(InvokeRowBean currentInvokeRowBean) { - this.currentInvokeRowBean = currentInvokeRowBean; - } - - public String getCurrentInvokeRowContent() { - return currentInvokeRowContent; - } - - public void setCurrentInvokeRowContent(String currentInvokeRowContent) { - this.currentInvokeRowContent = currentInvokeRowContent; - } - - public AbstractClassBean getInvokerClassBean() { - return invokerClassBean; - } - - public void setInvokerClassBean(AbstractClassBean invokerClassBean) { - this.invokerClassBean = invokerClassBean; - } - - - public String getInvokeSceneType() { - return InvokeSceneType; - } - - public void setInvokeSceneType(String invokeSceneType) { - InvokeSceneType = invokeSceneType; - } - - public String getMethodRWType() { - return methodRWType; - } - - public void setMethodRWType(String methodRWType) { - this.methodRWType = methodRWType; - } - - public MethodBean getInvokerMethodBean() { - return invokerMethodBean; - } - - public void setInvokerMethodBean(MethodBean invokerMethodBean) { - this.invokerMethodBean = invokerMethodBean; - } - - public String getInvokerMethod() { - return invokerMethod; - } - - public void setInvokerMethod(String invokerMethod) { - this.invokerMethod = invokerMethod; - } - - public String getProviderClassName() { - return providerClassName; - } - - public void setProviderClassName(String providerClassName) { - this.providerClassName = providerClassName; - } - - - public PlantUmlContextBean getPlantUmlContextBean() { - return plantUmlContextBean; - } - - public void setPlantUmlContextBean(PlantUmlContextBean plantUmlContextBean) { - this.plantUmlContextBean = plantUmlContextBean; - } - - /** - * 根据调用者和被调用者以及当前需要绘制的方法构判断调用场景和读写类型 - * - * @param invokeClassName - * @param providerClassName - */ - public void buildInvokeScene(String invokeClassName, String providerClassName) { - String invokeScene = InvokeSceneTypeEnum.getInvokeScene(invokeClassName, providerClassName); - if (StringUtils.isNotEmpty(invokeScene)) { - this.setInvokeSceneType(invokeScene); - } - - if (StringUtils.isNotEmpty(this.getInvokerMethod())) { - String rwType = ReadWriteTypeEnum.getCodeByMethod(this.getInvokerMethod()); - this.setMethodRWType(rwType); - } - } - - /** - * 根据调用内容构建调用场景 - * - * @param invokeContent - */ - public void buildInvokeSceneV2(String invokeContent) { - String invokeSceneStr = invokeContent.split(":")[0].trim(); - - String invokeScene = InvokeSceneTypeEnum.getInvokeSceneV2(invokeSceneStr); - if (StringUtils.isNotEmpty(invokeScene)) { - this.setInvokeSceneType(invokeScene); - } - - if (StringUtils.isNotEmpty(this.getInvokerMethod())) { - String rwType = ReadWriteTypeEnum.getCodeByMethod(this.getInvokerMethod()); - this.setMethodRWType(rwType); - } - } - - - /** - * 构建当前调用行bean - * - * @param currentInvokeRowContent - */ - public void buildCurrentInvokeRow(String currentInvokeRowContent) { - this.setCurrentInvokeRowContent(currentInvokeRowContent); - /** - * 如果有返回值 - */ - InvokeRowBean invokeRowBean = new InvokeRowBean(); - if (currentInvokeRowContent.contains("=")) { - String[] rowContentArr = currentInvokeRowContent.split("="); - String returnBody = rowContentArr[0]; - invokeRowBean.setReturnClassName(returnBody.trim().split(" ")[0].trim()); - invokeRowBean.setReturnClassValue(returnBody.trim().split(" ")[1].trim()); - } - String classNameVar = this.getProviderClassName().substring(0,1).toLowerCase()+ this.getProviderClassName().substring(1); - invokeRowBean.setProviderClassNameVar(classNameVar); - - invokeRowBean.setProviderClassName(this.getProviderClassName()); - invokeRowBean.setProviderMethodName(this.getProviderClassMethod().getSimplMethodName()); - invokeRowBean.setReturnClassName(this.getProviderClassMethod().getReturnClass()); - this.getProviderClassMethod().buildParamArr(); - invokeRowBean.setProviderMethodParamTypeArr(this.getProviderClassMethod().getParamArr()); - invokeRowBean.buildParamValueArr(); - - this.setCurrentInvokeRowBean(invokeRowBean); - } - - @Override - public String toString() { - return "InvokeContextBean{" + - "invokerMethodBean=" + invokerMethodBean + - ", providerClassName='" + providerClassName + '\'' + - ", invokerMethod='" + invokerMethod + '\'' + - ", InvokeSceneType='" + InvokeSceneType + '\'' + - ", methodRWType='" + methodRWType + '\'' + - ", invokerClassBean=" + invokerClassBean + - ", currentInvokeRowContent='" + currentInvokeRowContent + '\'' + - ", currentInvokeRowBean=" + currentInvokeRowBean + - '}'; - } - - - public AbstractClassBean getProviderClassBean() { - return providerClassBean; - } - - public void setProviderClassBean(AbstractClassBean providerClassBean) { - this.providerClassBean = providerClassBean; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeRowBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeRowBean.java deleted file mode 100644 index 735c9a2..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/invoke/InvokeRowBean.java +++ /dev/null @@ -1,212 +0,0 @@ -package com.coderman.codemaker.bean.invoke; - -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import org.apache.commons.lang3.StringUtils; - -import java.util.Objects; - -/** - * Description:动态绘制的调用代码行 - * date: 2021/10/21 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class InvokeRowBean { - /** - * 被调用方的类名 - */ - private String providerClassName; - - /** - * 被调用方的类名对应的变量名 - */ - private String providerClassNameVar; - /** - * 被调用方的方法名 - */ - private String providerMethodName; - - /** - * 被调用方的方法参数value值 - * 如:null,xxxBo - */ - private String [] providerMethodParamValueArr; - - /** - * 被调用方的方法参数类型 - * 如:XXXBO xxxBo - */ - private String [] providerMethodParamTypeArr; - - /** - * 被调用方的方法返回值类型 - */ - private String returnClassName; - - /** - * 被调用方的方法返回值 - */ - private String returnClassValue; - - public String getProviderClassName() { - return providerClassName; - } - - public void setProviderClassName(String providerClassName) { - this.providerClassName = providerClassName; - } - - public String getProviderMethodName() { - return providerMethodName; - } - - public void setProviderMethodName(String providerMethodName) { - this.providerMethodName = providerMethodName; - } - - public String[] getProviderMethodParamValueArr() { - return providerMethodParamValueArr; - } - - public void setProviderMethodParamValueArr(String[] providerMethodParamValueArr) { - this.providerMethodParamValueArr = providerMethodParamValueArr; - } - - public String[] getProviderMethodParamTypeArr() { - return providerMethodParamTypeArr; - } - - public void setProviderMethodParamTypeArr(String[] providerMethodParamTypeArr) { - this.providerMethodParamTypeArr = providerMethodParamTypeArr; - } - - public String getReturnClassName() { - return returnClassName; - } - - public void setReturnClassName(String returnClassName) { - this.returnClassName = returnClassName; - } - - public String getReturnClassValue() { - return returnClassValue; - } - - public void setReturnClassValue(String returnClassValue) { - this.returnClassValue = returnClassValue; - } - - - public String getProviderClassNameVar() { - return providerClassNameVar; - } - - public void setProviderClassNameVar(String providerClassNameVar) { - this.providerClassNameVar = providerClassNameVar; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - InvokeRowBean that = (InvokeRowBean) o; - return Objects.equals(providerClassName, that.providerClassName) && - Objects.equals(providerMethodName, that.providerMethodName) && - Objects.equals(returnClassName, that.returnClassName); - } - - @Override - public int hashCode() { - return Objects.hash(providerClassName, providerMethodName, returnClassName); - } - - - /** - * 转换成字符串调用行 - * @return - */ - public String buildInvokeContent(){ - StringBuilder builder = new StringBuilder(); - if(!StringUtils.isEmpty(this.getReturnClassName()) && StringUtils.isNotEmpty(this.getReturnClassValue())){ - builder.append(this.getReturnClassName()+" "); - builder.append(this.getReturnClassValue()+" = "); - } - builder.append(this.getProviderClassNameVar()+"."); - builder.append(this.getProviderMethodName()); - if(this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0){ - builder.append("()"); - return builder.toString(); - } - builder.append("("); - - for (String paramValue : this.getProviderMethodParamValueArr()){ - builder.append(paramValue+", "); - } - return builder.substring(0,builder.length() - 2)+")"; - } - - /** - * 根据依赖的代码行内容,完善本身的代码行内容 - * - * 这里主要是完善本身的方法入参内容,将上一行调用内容的变量类和变量名应用到当前行 - * @param invokeRowBean - * @return - */ - public String refreshInvokeContent(InvokeRowBean invokeRowBean, PlantUmlContextBean plantUmlContextBean){ - String preRowClassName = invokeRowBean.getReturnClassName(); - if(preRowClassName.contains(".")){ - String [] arr = preRowClassName.split("\\."); - preRowClassName = arr[arr.length - 1].replace(">",""); - } - if (StringUtils.isEmpty(preRowClassName) || this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0) { - return buildInvokeContent(); - } - - for (int i = 0;i < this.getProviderMethodParamTypeArr().length;i++){ - String currentRowClassName = this.getProviderMethodParamTypeArr()[i]; - String currentRowClassNameType = currentRowClassName; - String currentRowClassNameTypeVar = currentRowClassName; - if(currentRowClassNameType.contains(" ")){ - currentRowClassNameType = currentRowClassName.split(" ")[0]; - currentRowClassNameTypeVar = currentRowClassName.split(" ")[1]; - } - //通过类型推导 - if(preRowClassName.equals(currentRowClassNameType)){ - this.getProviderMethodParamValueArr()[i] = invokeRowBean.getReturnClassValue(); - }else { - //通过变量名推导,当前调用行的参数名与上一行的返回值是否存在has a关系,如getBySystemName(String systemName),上一行的返回值刚好是SystemBO - ClassBean classBean = plantUmlContextBean.getClassBeanMap().get(preRowClassName); - if(classBean == null){ - continue; - } - for (FieldBean fieldBean : classBean.getFieldBeanList()){ - String fieldName = fieldBean.getFieldName(); - String fieldNameVar = fieldName; - String fieldNameType = fieldName; - - if (fieldName.contains(" ")){ - fieldNameVar = fieldName.split(" ")[1]; - fieldNameType = fieldName.split(" ")[0]; - } - if(fieldNameVar.equals(currentRowClassNameTypeVar) && fieldNameType.equals(currentRowClassNameType)){ - this.getProviderMethodParamValueArr()[i] = invokeRowBean.getReturnClassValue()+"."+fieldBean.buildGetterMethodName(); - } - } - } - } - - return buildInvokeContent(); - } - - - public void buildParamValueArr(){ - if(this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0){ - return; - } - this.setProviderMethodParamValueArr(new String[this.getProviderMethodParamTypeArr().length]); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AbstractClassBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AbstractClassBean.java deleted file mode 100644 index faca6ae..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AbstractClassBean.java +++ /dev/null @@ -1,605 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.enums.CompTypeEnum; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.enums.TemplateFileEnum; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import org.apache.commons.collections4.CollectionUtils; - - -import java.lang.reflect.Field; -import java.util.*; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; - -/** - * Description: - * 抽象plantuml 类 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public abstract class AbstractClassBean { - /** - * 类名 - */ - protected String className; - - /** - * 所在包 - */ - protected String packageName; - /** - * 所属模块 - */ - protected String belongModel; - - /** - * 类描述 - */ - protected String classDesc; - - /** - * 方法 - */ - private List methodBeanList; - - /** - * 需要引入的class包名 - */ - private List importClassList; - /** - * 属性列表 - * - */ - private List fieldBeanList; - - - - /** - * 实现接口 - */ - private InterfaceBean implInterfaceBean; - - /** - * 继承类列表 - */ - private String relationClassStr; - /** - * 项目作者 - */ - private String author; - - /** - * 所在plantUML的包名 - */ - private String plantUMLPackage; - - /** - * 是否是派生类 - */ - private boolean isDerived; - - /** - * 组件名称 - * 根据该标示判断是否是plantUML类图中的还是组件扫描引入的 - */ - private String compName; - - - //类所属组件类型,默认为spring,即plantUML类图中发起调用的类都是spring类型 - //这里当然还有其他类型,如xxbo.xxxMethod(),这里需要进行特殊识别 - private String compType = CompTypeEnum.SPRING.getCompTag(); - - - private String bodtoConvertInterface; - - private String bodoConvertInterface; - - private String bovoConvertInterface; - - /** - * 在动态调用中产生的引用包 - */ - private List dynamicImportPackageList; - - - /** - * 派生类链路 - * 如bo派生dto - * dto的派生链路里就有boclass - * 用来记录派生过程中的关联关系 - */ - private List derivedChainClassList; - - /** - * bo上的扩展属性对象 - */ - private ExtendFieldBean extendFieldBean = new ExtendFieldBean(); - - /** - * 对应的tableBean mapper对象使用 - */ - private TableBean tableBean; - - /** - * 对应的columnBeanList mapper对象使用 - */ - private List columnBeanList; - - /** - * 类上的注释 - */ - private String annotation; - - /** - * 所属上下文 - */ - private String context = ""; - - public String getCompName() { - return compName; - } - - public void setCompName(String compName) { - this.compName = compName; - } - - public String getCompType() { - return compType; - } - - public void setCompType(String compType) { - this.compType = compType; - } - - public String getContext() { - return context; - } - - public void setContext(String context) { - this.context = context; - } - - public String getAnnotation() { - return annotation; - } - - public void setAnnotation(String annotation) { - this.annotation = annotation; - } - - public TableBean getTableBean() { - return tableBean; - } - - public void setTableBean(TableBean tableBean) { - this.tableBean = tableBean; - } - - public List getColumnBeanList() { - return columnBeanList; - } - - public void setColumnBeanList(List columnBeanList) { - this.columnBeanList = columnBeanList; - } - - public ExtendFieldBean getExtendFieldBean() { - return extendFieldBean; - } - - public void setExtendFieldBean(ExtendFieldBean extendFieldBean) { - this.extendFieldBean = extendFieldBean; - } - - public List getDerivedChainClassList() { - return derivedChainClassList; - } - - public void setDerivedChainClassList(List derivedChainClassList) { - this.derivedChainClassList = derivedChainClassList; - } - - public List getDynamicImportPackageList() { - return dynamicImportPackageList; - } - - public void setDynamicImportPackageList(List dynamicImportPackageList) { - this.dynamicImportPackageList = dynamicImportPackageList; - } - - public String getBodtoConvertInterface() { - return bodtoConvertInterface; - } - - public void setBodtoConvertInterface(String bodtoConvertInterface) { - this.bodtoConvertInterface = bodtoConvertInterface; - } - - public String getBodoConvertInterface() { - return bodoConvertInterface; - } - - public void setBodoConvertInterface(String bodoConvertInterface) { - this.bodoConvertInterface = bodoConvertInterface; - } - - public String getBovoConvertInterface() { - return bovoConvertInterface; - } - - public void setBovoConvertInterface(String bovoConvertInterface) { - this.bovoConvertInterface = bovoConvertInterface; - } - - public boolean isDerived() { - return isDerived; - } - - public void setDerived(boolean derived) { - isDerived = derived; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - - public String getPlantUMLPackage() { - - return plantUMLPackage; - } - - public void setPlantUMLPackage(String plantUMLPackage) { - this.plantUMLPackage = plantUMLPackage; - } - - public String getRelationClassStr() { - return relationClassStr; - } - - public void setRelationClassStr(String relationClassStr) { - this.relationClassStr = relationClassStr; - } - - public InterfaceBean getImplInterfaceBean() { - return implInterfaceBean; - } - - public void setImplInterfaceBean(InterfaceBean implInterfaceBean) { - this.implInterfaceBean = implInterfaceBean; - } - - - public List getMethodBeanList() { - return methodBeanList; - } - - public void setMethodBeanList(List methodBeanList) { - this.methodBeanList = methodBeanList; - } - - public List getFieldBeanList() { - return fieldBeanList; - } - - public void setFieldBeanList(List fieldBeanList) { - this.fieldBeanList = fieldBeanList; - } - - public List getImportClassList() { - return importClassList; - } - - public void setImportClassList(List importClassList) { - this.importClassList = importClassList; - } - - public String getClassName() { - return className; - } - - public void setClassName(String className) { - this.className = className; - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public String getBelongModel() { - return belongModel; - } - - public void setBelongModel(String belongModel) { - this.belongModel = belongModel; - } - - public String getClassDesc() { - return classDesc; - } - - public void setClassDesc(String classDesc) { - this.classDesc = classDesc; - } - - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - AbstractClassBean that = (AbstractClassBean) o; - return Objects.equals(className, that.className) && - Objects.equals(packageName, that.packageName); - } - - @Override - public int hashCode() { - return Objects.hash(className, packageName); - } - - - public void buildPlantUMLPackage(String plantUMLPackage){ - if(plantUMLPackage.contains("\"")){ - String content = plantUMLPackage.split("\"")[1]; - if(content.contains("-")){ - String [] arr = content.split("-"); - if(arr[1].contains(".")){ - this.setPlantUMLPackage(arr[1].trim()); - return; - } - if(arr[0].contains(".")){ - this.setPlantUMLPackage(arr[0].trim()); - return; - } - - } - } - - this.setPlantUMLPackage(plantUMLPackage.trim().trim()); - } - - /** - * 合并引用包, - * 接口的引用包与实现的引用包合并 - * @param importClassList - */ - public void mergeImportClass(List importClassList){ - if(CollectionUtils.isEmpty(importClassList)){ - return; - } - if(CollectionUtils.isEmpty(this.getImportClassList())){ - this.setImportClassList(importClassList); - }else { - Set newHashSet = Sets.newHashSet(importClassList); - for (String importClassName : this.getImportClassList()){ - newHashSet.remove(importClassName); - } - this.getImportClassList().addAll(Lists.newArrayList(newHashSet)); - } - } - /** - * 构建简化版的field,去除扩展字段属性内容,对dto,vo屏蔽bo属性之间的关联关系,但是bo本身保留 - * @return - */ - public List buildSimpleFieldList(){ - - List fieldBeanList = new ArrayList<>(); - if(CollectionUtils.isEmpty(this.getFieldBeanList())){ - return fieldBeanList; - } - for (FieldBean oldBean : this.getFieldBeanList()){ - fieldBeanList.add(oldBean.copySelf()); - } - - //dto没有bo那么多的丰富信息,需要去掉 - List newFieldBeanList = fieldBeanList.stream().filter(fieldBean -> - !fieldBean.getFieldName().trim().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) - && fieldBean.isSimpleField() - && !fieldBean.getFieldName().trim().toLowerCase().contains(DomainElementEnum.BO.getElement()+">")) - .collect(Collectors.toList()); - - List fieldBeanFilterList = fieldBeanList.stream().filter(fieldBean -> - fieldBean.getFieldName().trim().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) - && fieldBean.isSimpleField() - || fieldBean.getFieldName().trim().toLowerCase().contains(DomainElementEnum.BO.getElement()+">")) - .collect(Collectors.toList()); - - fieldBeanFilterList.forEach(fieldBean -> { - fieldBean.setVisibility("/** "+fieldBean.getVisibility()); - fieldBean.setFieldName(fieldBean.getFieldName()+" **/"); - }); - - newFieldBeanList.addAll(fieldBeanFilterList); - return newFieldBeanList; - } - - - /** - * 在动态调用过程中匹配出调用者的调用方法和提供者的提供方法 - * 兼容写法 - * xxx.methodName invoke yyy.methodName - * xxx.method(2) invoke yyy.method(3) - * xxx.method(XxxBO, XxxEvent) invoke yyy.method(YyyDTO, YyyCmd) - * xxx.method(XxxBO xxxBO, XxxEvent xxxEvent) invoke yyy.method(YyyDTO yyyDTO, YyyCmd yyyCmd) - * @param currentMethod - * @return - */ - public Optional getMatchMethodBean(String currentMethod){ - - //如果没有方法参数则直接匹配 - if(!currentMethod.contains("(")){ - return this.getMethodBeanList().stream().filter(methodBean1 -> methodBean1.getMethodName().toLowerCase().startsWith(currentMethod.toLowerCase()+"(")).findFirst(); - } - - String methodName = currentMethod.split("\\(")[0]; - String currentMethodTag = currentMethod+"("; - String paramCountStr = currentMethod.replace(methodName,"").trim(); - //判断是否是xxx.method(2)这种写法 - int count = 0; - if(paramCountStr.length() == 3){ - String paramCount = paramCountStr.replace("(","").replace(")",""); - count = Integer.parseInt(paramCount); - } - - //方法名一样,参数数量不同 - if(count > 0){ - int finalCount = count; - return this.getMethodBeanList().stream() - .filter(methodBean1 -> methodBean1.getMethodName().toLowerCase().startsWith(currentMethodTag) - && methodBean1.getParamArr().length == finalCount - ) - .findFirst(); - } - - - //通过参数类型进行匹配 - String [] currentParamArr = currentMethod.split("\\(")[1].split(","); - - AtomicReference matchResultBean = new AtomicReference<>(); - this.getMethodBeanList().stream().forEach( - methodBean -> { - if(methodBean.getMethodName().toLowerCase().startsWith(currentMethodTag)){ - String [] paramArr = methodBean.getParamArr(); - for (int i = 0;i < paramArr.length;i ++){ - for (int j = 0;j < currentParamArr.length;j ++){ - String currentParamType = currentParamArr[j].trim().split(" ")[0]; - String paramType = paramArr[i].trim().split(" ")[0]; - if(currentParamType.equals(paramType.toLowerCase())){ - matchResultBean.set(methodBean); - } - } - } - } - } - ); - if(matchResultBean.get() == null){ - return Optional.empty(); - } - - return Optional.of(matchResultBean.get()); - } - - - /** - * 如果匹配不到,则将plantUML调用时序图中的方法注册到当前类中,做动态扩展 - * @param currentMethod - * @return - */ - public MethodBean getOrAddMethodBean(String currentMethod){ - Optional methodBeanOptional = getMatchMethodBean(currentMethod); - if(methodBeanOptional.isPresent()){ - methodBeanOptional.get().initInvokeRowContentList(); - return methodBeanOptional.get(); - } - if(!currentMethod.contains("(")){ - currentMethod = currentMethod +"()"; - } - - MethodBean methodBean = new MethodBean(); - methodBean.setDesc(""); - methodBean.setMethodName(currentMethod); - methodBean.buildParamArr(); - methodBean.setReturnClass("void"); - methodBean.setVisibility("public"); - methodBean.initInvokeRowContentList(); - this.getMethodBeanList().add(methodBean); - return methodBean; - } - - - /** - * 根据调用时序的调用内容判断调用方和被调用方是不是当前类 - * @param contentArr - * @return - */ - public boolean checkMatchClass(String [] contentArr){ - for (String content : contentArr){ - if(content.trim().toLowerCase().endsWith(this.getClassName().toLowerCase())){ - return true; - } - } - return false; - } - - /** - * 将classBean转换为WrteContentBean为后续的写文件做准备 - * @param content - * @param templateFileEnum - * @return - */ - public WriteContentBean buildWriteContentBean(String content, TemplateFileEnum templateFileEnum){ - return WriteContentBean.builder().content(content) - .templateName(templateFileEnum.getTempFileName()) - .humpClassName(this.getClassName()) - .classPackageName(this.getPackageName()) - .build(); - } - - - /** - * 由当前对象派生到新对象 - * @param className - * @param plantUMLPackage - * @param fieldBeanList - * @return - */ - public ClassBean derivedNewClassBean(String className,String plantUMLPackage,List fieldBeanList){ - ClassBean modelClassBean = new ClassBean(); - modelClassBean.setClassName(className); - modelClassBean.setFieldBeanList(fieldBeanList); - modelClassBean.setClassDesc(this.getClassDesc()); - modelClassBean.setContext(this.getContext()); - modelClassBean.setMethodBeanList(Lists.newArrayList()); - modelClassBean.setPlantUMLPackage(plantUMLPackage); - modelClassBean.setDerivedChainClassList(Lists.newArrayList(this.getClassName())); - return modelClassBean; - } - - /** - * 给方法增加导入类 - * @param classPackageName - */ - public void addImportClass(String classPackageName){ - if(CollectionUtils.isEmpty(this.getImportClassList())){ - this.setImportClassList(Lists.newArrayList(classPackageName)); - return; - } - if(!this.getImportClassList().contains(classPackageName)){ - this.getImportClassList().add(classPackageName); - } - } - - /** - * 为class增加fieldBean,根据名称判断是否存在,已存在则忽略 - * @param fieldBean - */ - public void addField(FieldBean fieldBean){ - if (CollectionUtils.isEmpty(this.getFieldBeanList())){ - this.setFieldBeanList(new ArrayList<>()); - } - Optional fieldBeanOptional = this.getFieldBeanList().stream().filter(fieldBean1 -> fieldBean1.getSimpleName().equals(fieldBean.getSimpleName())).findFirst(); - if(fieldBeanOptional.isPresent()){ - return; - } - this.getFieldBeanList().add(fieldBean); - } - - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AnnotationBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AnnotationBean.java deleted file mode 100644 index 3cf50dc..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/AnnotationBean.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -/** - * Description:枚举模型 - * date: 2021/11/23 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class AnnotationBean extends AbstractClassBean { -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ClassBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ClassBean.java deleted file mode 100644 index e1c043e..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ClassBean.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import java.util.HashMap; -import java.util.Map; - -/** - * Description: - * class 类信息 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ClassBean extends AbstractClassBean { - - public Map buildVarMap(){ - Map varMap = new HashMap<>(); - varMap.put("class",this); - varMap.put("table",this.getTableBean()); - varMap.put("columns",this.getColumnBeanList()); - varMap.put("fields",this.getFieldBeanList()); - varMap.put("methods",this.getMethodBeanList()); - varMap.put("imports",this.getImportClassList()); - return varMap; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/EnumBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/EnumBean.java deleted file mode 100644 index 34d6a77..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/EnumBean.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Description: 枚举类 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class EnumBean extends AbstractClassBean { - - /** - * 枚举值 - */ - private List enumValueList; - - - /** - * 构造方法参数 - */ - private String constructParamStr; - /** - * 构造方法体初始化设置 - */ - private List constructMethodBodyList; - - public String getConstructParamStr() { - return constructParamStr; - } - - public void setConstructParamStr(String constructParamStr) { - this.constructParamStr = constructParamStr; - } - - public List getConstructMethodBodyList() { - return constructMethodBodyList; - } - - public void setConstructMethodBodyList(List constructMethodBodyList) { - this.constructMethodBodyList = constructMethodBodyList; - } - - public List getEnumValueList() { - return enumValueList; - } - - public void setEnumValueList(List enumValueList) { - this.enumValueList = enumValueList; - } - - - public Map buildVarMap(){ - Map varMap = new HashMap<>(); - varMap.put("class",this); - varMap.put("fields",this.getFieldBeanList()); - varMap.put("methods",this.getMethodBeanList()); - varMap.put("enums",this.getEnumValueList()); - varMap.put("methods",this.getMethodBeanList()); - varMap.put("bodys",this.getConstructMethodBodyList()); - return varMap; - } - public EnumBean copySelf(){ - EnumBean enumBean = new EnumBean(); - enumBean.setFieldBeanList(this.getFieldBeanList()); - enumBean.setPlantUMLPackage(this.getPlantUMLPackage()); - enumBean.setAuthor(this.getAuthor()); - enumBean.setEnumValueList(this.getEnumValueList()); - enumBean.setConstructMethodBodyList(this.getConstructMethodBodyList()); - enumBean.setClassDesc(this.getClassDesc()); - enumBean.setClassName(this.getClassName()); - enumBean.setMethodBeanList(this.getMethodBeanList()); - enumBean.setImportClassList(this.getImportClassList()); - enumBean.setConstructParamStr(this.getConstructParamStr()); - enumBean.setPackageName(this.getPackageName()); - return enumBean; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ExtendFieldBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ExtendFieldBean.java deleted file mode 100644 index 2817399..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/ExtendFieldBean.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -/** - * Description:从plantUMl中解析出的扩展属性上下文 - * date: 2021/10/21 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class ExtendFieldBean { - /** - * 需要解析的调用时序图文件列表 - */ - private String[] invokeFileKey; - /** - * bo对应的表名称 - */ - private String tableKey; - /** - * bo对应的facade接口名称列表 - */ - private String[] facadeKey; - /** - * bo对应的controller接口名称列表 - */ - private String[] controllerKey; - /** - * bo对应的dto对象列表 - */ - private String[] dtoKeyList; - - /** - * bo对应的vo对象列表 - */ - private String[] voKeyList; - - - - public String[] getInvokeFileKey() { - return invokeFileKey; - } - - public void setInvokeFileKey(String[] invokeFileKey) { - this.invokeFileKey = invokeFileKey; - } - - public String getTableKey() { - return tableKey; - } - - public void setTableKey(String tableKey) { - this.tableKey = tableKey; - } - - public String[] getFacadeKey() { - return facadeKey; - } - - public void setFacadeKey(String[] facadeKey) { - this.facadeKey = facadeKey; - } - - public String[] getControllerKey() { - return controllerKey; - } - - public void setControllerKey(String[] controllerKey) { - this.controllerKey = controllerKey; - } - - public String[] getDtoKeyList() { - return dtoKeyList; - } - - public void setDtoKeyList(String[] dtoKeyList) { - this.dtoKeyList = dtoKeyList; - } - - public String[] getVoKeyList() { - return voKeyList; - } - - public void setVoKeyList(String[] voKeyList) { - this.voKeyList = voKeyList; - } - - public void buildTableKey(String tableKey){ - this.setTableKey(tableKey.replace("String","").replace("string","").trim()); - } - - public void buildDtoKeyArr(String dtoKey){ - this.setDtoKeyList(dtoKey.replace("String","").replace("string","").trim().split(",")); - } - - public void buildFacadeKeyArr(String facadeKey){ - this.setFacadeKey(facadeKey.replace("String","").replace("string","").trim().split(",")); - } - - public void buildVoKeyArr(String voKeyList){ - this.setVoKeyList(voKeyList.replace("String","").replace("string","").trim().split(",")); - } - - public void buildControllerKeyArr(String controllerKeyList){ - this.setControllerKey(controllerKeyList.replace("String","").replace("string","").trim().split(",")); - } - - public void buildInvokeFileKeyArr(String invokeFileKey){ - this.setInvokeFileKey(invokeFileKey.replace("String","").replace("string","").trim().split(",")); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/FieldBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/FieldBean.java deleted file mode 100644 index 6c4f0bd..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/FieldBean.java +++ /dev/null @@ -1,352 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import com.alibaba.fastjson.annotation.JSONField; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.enums.VisibilityEnum; -import org.apache.commons.lang3.StringUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class FieldBean { - /** - * 属性名称 - */ - private String fieldName; - /** - * 访问权限 - */ - private String visibility; - - /** - * 属性描述 - */ - private String desc; - - /** - * do对应class下的数据库表字段名 - */ - private String dbColumnName; - - - /** - * 属性类型 - */ - private String fieldType; - - /** - * 属性简单名称 - */ - private String fieldSimpleName; - - /** - * 注解 - */ - private String annotation; - - /** - * plantUMl类图的原始数据 - */ - private String originFieldStr; - - - public String getOriginFieldStr() { - return originFieldStr; - } - - public void setOriginFieldStr(String originFieldStr) { - this.originFieldStr = originFieldStr; - } - - public String getAnnotation() { - return annotation; - } - - public void setAnnotation(String annotation) { - this.annotation = annotation; - } - - public String getFieldType() { - return fieldType; - } - - public void setFieldType(String fieldType) { - this.fieldType = fieldType; - } - - public String getFieldSimpleName() { - return fieldSimpleName; - } - - public void setFieldSimpleName(String fieldSimpleName) { - this.fieldSimpleName = fieldSimpleName; - } - - public FieldBean(){ - - } - - public FieldBean(String fieldName,String desc,String dbColumnName ){ - this(fieldName,desc,dbColumnName, VisibilityEnum.PRIVATE.getVisibility()); - } - - public FieldBean(String fieldName,String desc,String dbColumnName,String visibility ){ - this.fieldName = fieldName; - this.desc = desc; - this.dbColumnName = dbColumnName; - this.visibility = visibility; - } - - public String getDbColumnName() { - return dbColumnName; - } - - public void setDbColumnName(String dbColumnName) { - this.dbColumnName = dbColumnName; - } - - public String getFieldName() { - return fieldName; - } - - public void setFieldName(String fieldName) { - this.fieldName = fieldName; - } - - public String getVisibility() { - return visibility; - } - - public void setVisibility(String visibility) { - this.visibility = visibility; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - /** - * 是否关联具体数据表 - * @return - */ - @JSONField(serialize = false) - public boolean isTableKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.TABLE_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.TABLE_KEY); - } - - /** - * 是否需要派生dto - * @return - */ - @JSONField(serialize = false) - public boolean isDtoKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.DTO_KEY_LIST) - || this.fieldName.toLowerCase().contains(GlobalConstant.DTO_KEY_LIST); - } - - /** - * 是否需要派生dto - * @return - */ - @JSONField(serialize = false) - public boolean isFacadeKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.FACADE_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.FACADE_KEY); - } - - @JSONField(serialize = false) - public boolean isVoKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.VO_KEY_LIST) - || this.fieldName.toLowerCase().contains(GlobalConstant.VO_KEY_LIST); - } - - @JSONField(serialize = false) - public boolean isControllerKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.CONTROLLER_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.CONTROLLER_KEY); - } - - @JSONField(serialize = false) - public boolean isCopyToRpcClientKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.COPY2RPC_CLIENT_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.COPY2RPC_CLIENT_KEY); - } - - @JSONField(serialize = false) - public boolean isInvokeFileKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.INVOKE_FILE_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.INVOKE_FILE_KEY); - } - - - @JSONField(serialize = false) - public boolean isContextKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.CONTEXT_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.CONTEXT_KEY); - } - - @JSONField(serialize = false) - public boolean isQueryDtoKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.QUERY_DTO_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.QUERY_DTO_KEY); - } - - @JSONField(serialize = false) - public boolean isQueryVoKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.QUERY_VO_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.QUERY_VO_KEY); - } - - @JSONField(serialize = false) - public boolean isExportAclKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY) - || this.fieldName.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY); - } - - - /** - * 根据条件判断是否是简单类型--非扩展字段信息判断 - * @return - */ - @JSONField(serialize = false) - public boolean isSimpleField(){ - return !this.isTableKey() - && !this.isDtoKey() - && !this.isFacadeKey() - && !this.isVoKey() - && !this.isControllerKey() - && !this.isInvokeFileKey() - && !this.isContextKey() - && !this.isQueryVoKey() - && !this.isQueryDtoKey() - && !this.isExportAclKey() - && !this.isMethod(); - } - - - /** - * 构建属性注释 - * @param desc - */ - public void buildDesc(String desc){ - if(desc.startsWith(VisibilityEnum.PUBLIC.getTag()) - || desc.startsWith(VisibilityEnum.PRIVATE.getTag()) - || desc.startsWith(VisibilityEnum.PROTECT.getTag())){ - String newDesc = desc.substring(1,desc.length()-1); - this.setDesc(newDesc); - }else { - this.setDesc(desc); - } - } - - - public FieldBean copySelf(){ - FieldBean fieldBean = new FieldBean(); - fieldBean.setFieldName(this.getFieldName()); - fieldBean.setVisibility(this.getVisibility()); - fieldBean.setDesc(this.getDesc()); - return fieldBean; - } - - - /** - * 构建属性的getter方法名 - * @return - */ - public String buildGetterMethodName(){ - String simpleFieldName = this.getFieldName(); - if(fieldName.contains(" ")){ - simpleFieldName = fieldName.split(" ")[1]; - } - String prefix = "get"; - //判断是否是boolean类型 - if(this.getFieldName().toLowerCase().contains("boolean")){ - prefix = "is"; - } - return prefix+simpleFieldName.substring(0,1).toUpperCase()+simpleFieldName.substring(1)+"()"; - } - - public void buildFieldDetail(){ - if(this.getFieldName().contains(" ")){ - String [] fieldArr = this.getFieldName().split(" "); - this.setFieldType(fieldArr[0]); - this.setFieldSimpleName(fieldArr[1]); - } - } - - @Override - public String toString() { - return "FieldBean{" + - "fieldName='" + fieldName + '\'' + - ", desc='" + desc + '\'' + - ", dbColumnName='" + dbColumnName + '\'' + - '}'; - } - - public String getSimpleName(){ - buildFieldDetail(); - return this.getFieldSimpleName(); - } - - @JSONField(serialize = false) - public boolean isMethod(){ - return this.desc.toLowerCase().contains("/") - || this.fieldName.toLowerCase().contains("("); - } - /** - * queryDtoKey:SystemQueryDTO String systemName,String systemCode,Long departmentId, Date startDate,Date endDate - * queryVoKey:SystemQueryVO String systemName,String systemCode,Long departmentId, Date startDate,Date endDate - * - */ - - /** - * 从原始数据中构建查询请求对象 - * @return - */ - public ClassBean buildQueryClass(){ - String queryFieldStr = this.getOriginFieldStr().split(":")[1]; - String [] fieldStrArr = queryFieldStr.split(","); - ClassBean classBean = new ClassBean(); - - List fieldBeanList = new ArrayList<>(); - - for (int i = 0;i < fieldStrArr.length;i++){ - String [] fieldArr = fieldStrArr[i].trim().split(" "); - List fieldStrList = new ArrayList<>(); - for (String fieldStr : fieldArr){ - if(StringUtils.isNotEmpty(fieldStr.trim())){ - fieldStrList.add(fieldStr); - } - } - if(fieldStrList.size() == 3) { - classBean.setClassName(fieldStrList.get(0)); - FieldBean fieldBean = new FieldBean(); - fieldBean.setDesc(""); - fieldBean.setFieldName(fieldStrList.get(1)+" "+fieldStrList.get(2)); - fieldBean.buildFieldDetail(); - fieldBeanList.add(fieldBean); - }else { - FieldBean fieldBean = new FieldBean(); - fieldBean.setDesc(""); - fieldBean.setFieldName(fieldStrList.get(0)+" "+fieldStrList.get(1)); - fieldBean.buildFieldDetail(); - fieldBeanList.add(fieldBean); - } - } - classBean.setFieldBeanList(fieldBeanList); - return classBean; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/InterfaceBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/InterfaceBean.java deleted file mode 100644 index 74fd684..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/InterfaceBean.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import java.util.HashMap; -import java.util.Map; - -/** - * Description: - * - * 领域接口 - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class InterfaceBean extends AbstractClassBean{ - public Map buildVarMap(){ - Map varMap = new HashMap<>(); - varMap.put("class",this); - varMap.put("fields",this.getFieldBeanList()); - varMap.put("methods",this.getMethodBeanList()); - varMap.put("imports",this.getImportClassList()); - return varMap; - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/MethodBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/MethodBean.java deleted file mode 100644 index 2f6853a..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/MethodBean.java +++ /dev/null @@ -1,693 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import com.alibaba.fastjson.annotation.JSONField; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.apidoc.ApiDocBean; -import com.coderman.codemaker.bean.apidoc.ApiParamBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.VisibilityEnum; -import com.coderman.codemaker.utils.StringHandleUtils; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; - -import java.util.*; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class MethodBean { - - public MethodBean(){} - public MethodBean(String methodName,String returnClass){ - this.methodName = methodName; - this.returnClass = returnClass; - } - - public MethodBean(String methodName,String returnClass, String desc){ - this.methodName = methodName; - this.returnClass = returnClass; - this.desc = desc; - } - /** - * 方法名称, - * 包括参数,括号 - */ - private String methodName; - /** - * 访问权限 - */ - private String visibility; - - /** - * 方法描述 - */ - private String desc; - - /** - * 是否是静态属性 - */ - private boolean isStatic; - - /** - * 方法返回值 - */ - private String returnClass; - - /** - * 方法返回对象所在包 - */ - private String returnClassPackage; - - - /** - * 方法内容 - */ - private String methodContent; - - /** - * 方法返回体 - */ - private String returnBody; - - /** - * controller方法的请求路径 - */ - private String pathValue; - - - /** - * 方法调用内容,根据调用流程图-plantUML解析而来 - */ - private LinkedList invokeMethodList; - - /** - * 方法调用内容,根据调用流程图-plantUML解析而来 - * 与invokeMethodList保持一致 - * 帮助去除重复和进行上下文调用分析辅助动态绘制 - */ - private List invokeRowBeanList; - - - /** - * 方法文档 - */ - private String doc; - - /** - * 解析出来的方法参数列表 - */ - private String [] paramArr; - - - /** - * 对于mapper和controller需要增加参数注解的进行动态构建参数注解 - */ - private String [] paramAnnotationArr; - - /** - * 所属类名 - */ - private String className; - - /** - * 方法上的注解 - */ - private String annotation; - - /** - * 方法的范型返回值 - */ - private String genericReturnType; - - /** - * 方法的范型参数 - */ - private List genericParamList; - - /** - * 是否是bo模型定义的扩展接口 - */ - private boolean modelExtendMethod; - - public boolean isModelExtendMethod() { - return modelExtendMethod; - } - - public void setModelExtendMethod(boolean modelExtendMethod) { - this.modelExtendMethod = modelExtendMethod; - } - - public List getGenericParamList() { - return genericParamList; - } - - public void setGenericParamList(List genericParamList) { - this.genericParamList = genericParamList; - } - - public String getGenericReturnType() { - return genericReturnType; - } - - public void setGenericReturnType(String genericReturnType) { - this.genericReturnType = genericReturnType; - } - - public String getAnnotation() { - return annotation; - } - - public void setAnnotation(String annotation) { - this.annotation = annotation; - } - - public String[] getParamAnnotationArr() { - return paramAnnotationArr; - } - - public void setParamAnnotationArr(String[] paramAnnotationArr) { - this.paramAnnotationArr = paramAnnotationArr; - } - - public List getInvokeRowBeanList() { - return invokeRowBeanList; - } - - public void setInvokeRowBeanList(List invokeRowBeanList) { - this.invokeRowBeanList = invokeRowBeanList; - } - - public String getClassName() { - return className; - } - - public void setClassName(String className) { - this.className = className; - } - - public String[] getParamArr() { - return paramArr; - } - - public void setParamArr(String[] paramArr) { - this.paramArr = paramArr; - } - - public String getMethodContent() { - return methodContent; - } - - public void setMethodContent(String methodContent) { - this.methodContent = methodContent; - } - - public LinkedList getInvokeMethodList() { - return invokeMethodList; - } - - public void setInvokeMethodList(LinkedList invokeMethodList) { - this.invokeMethodList = invokeMethodList; - } - - public String getPathValue() { - return pathValue; - } - - public void setPathValue(String pathValue) { - this.pathValue = pathValue; - } - - public String getMethodName() { - return methodName; - } - - public void setMethodName(String methodName) { - this.methodName = methodName; - } - - public String getVisibility() { - return visibility; - } - - public void setVisibility(String visibility) { - this.visibility = visibility; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public boolean isStatic() { - return isStatic; - } - - public void setStatic(boolean aStatic) { - isStatic = aStatic; - } - - public String getReturnClass() { - return returnClass; - } - - public void setReturnClass(String returnClass) { - this.returnClass = returnClass; - } - - public String getReturnClassPackage() { - return returnClassPackage; - } - - public void setReturnClassPackage(String returnClassPackage) { - this.returnClassPackage = returnClassPackage; - } - - - public String getReturnBody() { - return returnBody; - } - - public void setReturnBody(String returnBody) { - this.returnBody = returnBody; - } - - - public String getDoc() { - return doc; - } - - public void setDoc(String doc) { - this.doc = doc; - } - - /** - * 动态构建方法内容 - */ - public void buildMethodContent(){ - if(CollectionUtils.isEmpty(invokeMethodList)){ - return; - } - - StringBuilder contentBuilder = new StringBuilder(); - for (String str : invokeMethodList){ - contentBuilder.append(" "+str+";\n"); - } - if(StringUtils.isEmpty(this.getMethodContent())){ - this.setMethodContent( contentBuilder.toString()); - }else { - this.setMethodContent(this.getMethodContent() + contentBuilder.toString()); - } - } - - /** - * 优化方法接口注释 - * @param desc - */ - public void buildDesc(String desc){ - if(desc.startsWith(VisibilityEnum.PUBLIC.getTag()) - || desc.startsWith(VisibilityEnum.PRIVATE.getTag()) - || desc.startsWith(VisibilityEnum.PROTECT.getTag())){ - String newDesc = desc.substring(1,desc.length()-1); - this.setDesc(newDesc); - }else { - this.setDesc(desc); - } - } - - - - /** - * 构建方法接口注释 - */ - public void buildDoc(){ - StringBuilder builder = new StringBuilder("\t/**\n" + - "\t *\n"); - builder.append("\t * @Description "+this.getDesc()+"\n"); - - if (!this.getMethodName().contains("()")){ - String [] paramArr = this.getMethodName().replace(")","").split("\\(")[1].split(","); - for (String param : paramArr){ - if(param.contains(" ")){ - builder.append("\t * @param "+param.trim().split(" ")[1]+"\n"); - }else { - builder.append("\t * @param "+ StringHandleUtils.getParamVar(param)+"\n"); - } - } - } - builder.append("\t * @return "+this.getReturnClass()+"\n"); - builder.append("\t */"); - this.setDoc(builder.toString()); - } - - - - /** - * 从方法名称中解析到方法参数 - */ - public void buildParamArr(){ - if(this.getParamArr() != null){ - return; - } - if(!this.getMethodName().contains("(") && !this.getMethodName().contains(")")){ - return; - } - if (!this.getMethodName().contains("()")){ - String [] paramArr = this.getMethodName().replace(")","").split("\\(")[1].split(","); - - if(paramArr != null && paramArr.length>=1){ - this.setParamArr(paramArr); - } - } - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - MethodBean that = (MethodBean) o; - return Objects.equals(methodName, that.methodName) && - Objects.equals(returnClass, that.returnClass) && - Objects.equals(className, that.className); - } - - @Override - public int hashCode() { - return Objects.hash(methodName, returnClass, className); - } - - /** - * 防止由于引用问题导致的MethodBean对象修改影响其他类下的method方法内容 - * @param methodContent - * @return - */ - public MethodBean copySelf(String methodContent){ - MethodBean newBean = new MethodBean(); - newBean.setClassName(this.getClassName()); - newBean.setDoc(this.getDoc()); - newBean.setMethodContent(methodContent); - newBean.setDesc(this.getDesc()); - newBean.setReturnClass(this.getReturnClass()); - newBean.setReturnBody(this.getReturnBody()); - newBean.setVisibility(this.getVisibility()); - newBean.setParamArr(this.getParamArr()); - newBean.setStatic(this.isStatic()); - newBean.setPathValue(this.getPathValue()); - newBean.setMethodName(refreshMethodName()); - - return newBean; - } - - /** - * 刷新方法声明,注入方法参数注解,也可能是方法注解,后续可扩展 - * @return - */ - public String refreshMethodName(){ - if(this.getParamAnnotationArr() == null || this.getParamAnnotationArr().length == 0){ - return this.getMethodName(); - } - String preMethod = this.getMethodName().split("\\(")[0]; - StringBuilder builder = new StringBuilder(preMethod); - List paramList = new ArrayList<>(); - for (int i = 0;i < this.getParamArr().length;i++){ - String annotation = this.getParamAnnotationArr()[i]; - String param = this.getParamArr()[i]; - paramList.add(annotation + " " + param); - } - builder.append("("); - builder.append(StringUtils.join(paramList,", ")); - builder.append(")"); - - return builder.toString(); - } - - /** - * 根据返回类型刷新方法返回体 - */ - public void refreshReturnBodyByReturnType(){ - if(this.getReturnClass().contains("void")){ - return; - } - if(StringHandleUtils.isStrictBasicType(this.getReturnClass())){ - if(this.getReturnClass().contains("boolean")){ - this.setReturnBody("return false;"); - } - else if(this.getReturnClass().contains("long")){ - this.setReturnBody("return 0L;"); - } - else if(this.getReturnClass().contains("double")){ - this.setReturnBody("return 0.0;"); - } - else if(this.getReturnClass().contains("float")){ - this.setReturnBody("return 0.0f;"); - } else { - this.setReturnBody("return 0;"); - } - } - - } - - - /** - * 将方法中的参数信息去掉,仅仅获取方法名 - * @return - */ - public String getSimplMethodName(){ - if(this.getMethodName().contains("()")){ - return this.getMethodName().replace("()",""); - } - else { - return this.getMethodName().split("\\(")[0]; - } - } - - /** - * 构建方法的调用内容 - * @param currentRowContent - * @param currentRowBean - */ - public void addInvokeRowContent(String currentRowContent,InvokeRowBean currentRowBean){ - - for (InvokeRowBean oldRowBean : this.getInvokeRowBeanList()){ - if(oldRowBean.equals(currentRowBean)){ - return; - } - } - - if(CollectionUtils.isEmpty( this.getInvokeRowBeanList())){ - this.getInvokeMethodList().add(currentRowContent); - this.getInvokeRowBeanList().add(currentRowBean); - }else { - //判断变量名是否重复 - Set returnSet = new HashSet<>(); - for (InvokeRowBean invokeRowBean : this.getInvokeRowBeanList()){ - String returnValue = invokeRowBean.getReturnClassName() + invokeRowBean.getReturnClassValue(); - returnSet.add(returnValue); - } - String currentReturnValue = currentRowBean.getReturnClassName() + currentRowBean.getReturnClassValue(); - if(returnSet.contains(currentReturnValue)){ - currentRowBean.setReturnClassValue(currentRowBean.getReturnClassValue()+this.getInvokeRowBeanList().size()); - this.getInvokeRowBeanList().add(currentRowBean); - this.getInvokeMethodList().add(currentRowBean.buildInvokeContent()); - } - - } - - } - - /** - * 初始化 - */ - public void initInvokeRowContentList(){ - if(CollectionUtils.isEmpty(invokeRowBeanList)){ - this.setInvokeRowBeanList(new ArrayList<>()); - } - if(CollectionUtils.isEmpty(invokeMethodList)){ - this.setInvokeMethodList(new LinkedList<>()); - } - } - - - /** - * 解析方法返回参数类型,是否包含vo,dto,bo - * @return - */ - @JSONField(serialize = false) - public String getReturnClassTypeModel(){ - if(this.getReturnClass().contains("void")){ - return ""; - } - - if(this.getReturnClass().contains("<")){ - String [] returnClassArr = this.getReturnClass().split("<"); - String matchClassType = ""; - for (String classStr : returnClassArr){ - String classType = classStr.trim().replace(">",""); - if(TemplateFileEnum.isClassModel(classType)){ - matchClassType = classType; - } - } - return matchClassType; - } - return this.getReturnClass(); - } - - /** - * 解析方法返回参数类型,是否包含vo,dto,bo - * @return - */ - @JSONField(serialize = false) - public String getReturnClassTypeNoWrapper(){ - if(this.getReturnClass().contains("void")){ - return ""; - } - - if(!this.wrapperResultDto() && !this.wrapperResultDataDto()){ - return this.getReturnClass(); - } - - if(this.getReturnClass().contains("<")){ - int index = this.getReturnClass().indexOf("<"); - return this.getReturnClass().substring(index+1,this.getReturnClass().length() - 1); - } - return this.getReturnClass(); - } - - - - /** - * 校验外部参数是否与方法参数匹配,这里只需要匹配一个即可 - * @param param - * @return - */ - public boolean paramMatchOne(String param){ - if(this.getParamArr() == null || this.getParamArr().length == 0){ - return false; - } - String tempParam = param; - if(tempParam.trim().contains(" ")){ - tempParam = tempParam.split(" ")[0]; - } - for (String paramInfo : this.getParamArr()){ - String paramType = paramInfo; - if(paramInfo.trim().contains(" ")){ - paramType = paramInfo.split(" ")[0]; - } - if(paramType.toLowerCase().endsWith(tempParam.toLowerCase())){ - return true; - } - } - return false; - } - - /** - * 判断方法是不是有包装类对象 - * @return - */ - public boolean wrapperResultDto(){ - - if (this.getReturnClass().contains("Result")){ - return true; - } - return false; - } - - public boolean wrapperResultDataDto(){ - if(this.getReturnClass().contains("ResultDataDto")){ - return true; - } - return false; - } - - - /** - * 动态构建方法返回值包装 - * @param returnBody - */ - public void wrapperResultBody(String returnBody){ - if(this.getReturnClass().equals("void")){ - return; - } - if(this.getReturnClass().contains(returnBody)){ - return; - } - - this.setReturnClass(returnBody+"<"+this.getReturnClass()+">"); - } - - - - /** - * 构建api文档 - * @return - */ - public ApiDocBean buildApiDocBean(Map classVOBeanMap){ - ApiDocBean apiDocBean = new ApiDocBean(); - apiDocBean.setInterfaceName(this.getSimplMethodName()); - apiDocBean.setParamBeanList(convertToApiParam(classVOBeanMap)); - apiDocBean.setReturnClass(this.getReturnClass()); - apiDocBean.setInterfaceDesc(this.getDesc()); - apiDocBean.setHttpPath(this.getPathValue()); - return apiDocBean; - } - - private List convertToApiParam(Map classVOBeanMap){ - if(this.getParamArr() == null || this.getParamArr().length == 0){ - return null; - } - List apiParamBeanList = new ArrayList<>(); - for (String param : this.getParamArr()){ - ApiParamBean apiParamBean = new ApiParamBean(); - if(!param.trim().contains(" ")){ - continue; - } - String [] arr = param.split(" "); - apiParamBean.setFieldName(arr[1]); - apiParamBean.setFieldType(arr[0]); - apiParamBeanList.add(apiParamBean); - if(arr[0].toLowerCase().endsWith(TemplateFileEnum.VO.getTempFileName()) - || arr[0].toLowerCase().endsWith(TemplateFileEnum.DTO.getTempFileName())){ - ClassBean classBean = classVOBeanMap.get(arr[0]); - if(classBean == null){ - - continue; - } - apiParamBeanList.get(apiParamBeanList.size() - 1).setFieldDesc("对象类型,参数如下:"); - for (FieldBean fieldBean : classBean.getFieldBeanList()){ - if(fieldBean.getFieldName().contains("*")){ - continue; - } - ApiParamBean paramBean = new ApiParamBean(); - String [] arr2 = fieldBean.getFieldName().split(" "); - paramBean.setFieldName(arr2[1]); - paramBean.setFieldType(arr2[0]); - paramBean.setFieldDesc(fieldBean.getDesc()); - apiParamBeanList.add(paramBean); - } - - } - - } - return apiParamBeanList; - } - - - /** - * 判断方法是否需要导出acl param - * @return - */ - @JSONField(serialize = false) - public boolean isExportAclKey(){ - return this.desc.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY) - || this.methodName.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY); - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PackageBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PackageBean.java deleted file mode 100644 index 2877b4f..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PackageBean.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import java.util.List; - -/** - * Description: - * date: 2021/7/2 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class PackageBean { - private String packageName; - - private List enumBeanList; - private List interfaceBeanList; - private List classBeanList; - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - this.packageName = packageName; - } - - public List getEnumBeanList() { - return enumBeanList; - } - - public void setEnumBeanList(List enumBeanList) { - this.enumBeanList = enumBeanList; - } - - public List getInterfaceBeanList() { - return interfaceBeanList; - } - - public void setInterfaceBeanList(List interfaceBeanList) { - this.interfaceBeanList = interfaceBeanList; - } - - public List getClassBeanList() { - return classBeanList; - } - - public void setClassBeanList(List classBeanList) { - this.classBeanList = classBeanList; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PlantUmlContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PlantUmlContextBean.java deleted file mode 100644 index 01eae19..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/bean/plantuml/PlantUmlContextBean.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.coderman.codemaker.bean.plantuml; - -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.google.common.collect.Sets; - -import java.util.*; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ - -public class PlantUmlContextBean { - - private Map classBeanMap = new HashMap<>(); - - private Map enumBeanMap = new HashMap<>(); - - private Map interfaceBeanMap = new HashMap<>(); - - private Map packageBeanMap = new HashMap<>(); - - /** - * 派生类上下文 - */ - private PlantUmlContextBean derivedPlantUmlContextBean; - - /** - * 扫描到的依赖组件 - */ - private Map compContextBeanMap; - - - /** - * app应用名称 - */ - private String appName; - - /** - * app应用类型 - */ - private String applicationType; - - - - /** - * 动态调用时序图文件 - */ - private List dynamicInvokeFileList = new ArrayList<>(); - - /** - * 记录解析调用时序中调用方的类和方法名 - * key:调用方的类名.方法名 - * value:被调用方的类名.方法名 - */ - private Map> dynamicInvokeChainMap = new HashMap<>(); - - public Map> getDynamicInvokeChainMap() { - return dynamicInvokeChainMap; - } - - public PlantUmlContextBean getDerivedPlantUmlContextBean() { - return derivedPlantUmlContextBean; - } - - public void setDerivedPlantUmlContextBean(PlantUmlContextBean derivedPlantUmlContextBean) { - this.derivedPlantUmlContextBean = derivedPlantUmlContextBean; - } - - public Map getClassBeanMap() { - return classBeanMap; - } - - public Map getEnumBeanMap() { - return enumBeanMap; - } - - public Map getInterfaceBeanMap() { - return interfaceBeanMap; - } - - public void addClassBean(ClassBean classBean){ - this.classBeanMap.put(classBean.getClassName(),classBean); - } - - public void addInterfaceBean(InterfaceBean interfaceBean){ - - this.interfaceBeanMap.put(interfaceBean.getClassName(),interfaceBean); - } - - public void addEnumBean(EnumBean enumBean){ - this.enumBeanMap.put(enumBean.getClassName(),enumBean); - } - - public Map getPackageBeanMap() { - return packageBeanMap; - } - - public void addPacakge(PackageBean packageBean){ - this.packageBeanMap.put(packageBean.getPackageName(),packageBean); - } - - public List getDynamicInvokeFileList() { - return dynamicInvokeFileList; - } - - /** - * 解析多个调用时序图文件名称 - * @param plantUMLFileName - */ - public void addDynamicInvokeFile(String plantUMLFileName){ - if(plantUMLFileName.contains(",")){ - String [] arr = plantUMLFileName.split(","); - for (String fileName : arr){ - dynamicInvokeFileList.add(fileName.trim()); - } - return; - } - dynamicInvokeFileList.add(plantUMLFileName); - } - - /** - * 记录调用时序图中的调用方信息 - * @param invokeContextBean - * @return 是否保存成功 - */ - public boolean addInvokeMethod(InvokeContextBean invokeContextBean){ - - String key = invokeContextBean.getInvokerClassBean().getClassName()+"."+invokeContextBean.getInvokerMethodBean().getMethodName(); - - Set providerMethodSet = this.dynamicInvokeChainMap.get(key); - if(providerMethodSet == null){ - providerMethodSet = Sets.newHashSet(); - } - String value = invokeContextBean.getProviderClassName()+invokeContextBean.getProviderClassMethod(); - - if(providerMethodSet.contains(value)){ - return false; - } - providerMethodSet.add(value); - - this.getDynamicInvokeChainMap().put(key,providerMethodSet); - - return true; - } - - - public String getAppName() { - return appName; - } - - public void setAppName(String appName) { - this.appName = appName; - } - - public String getApplicationType() { - return applicationType; - } - - public void setApplicationType(String applicationType) { - this.applicationType = applicationType; - } - - public Map getCompContextBeanMap() { - return compContextBeanMap; - } - - public void setCompContextBeanMap(Map compContextBeanMap) { - this.compContextBeanMap = compContextBeanMap; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassEnum.java deleted file mode 100644 index e2beb37..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassEnum.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum ClassEnum { - ENTITY("entity"), - CLASS("class"), - INTERFACE("interface"), - ENUM("enum"), - ; - private String classType; - ClassEnum(String classType){ - this.classType = classType; - } - - public String getClassType() { - return classType; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassRelationEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassRelationEnum.java deleted file mode 100644 index 4df1655..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ClassRelationEnum.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.coderman.codemaker.enums; - -import com.google.common.collect.Sets; -import org.apache.commons.lang3.StringUtils; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.atomic.AtomicReference; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum ClassRelationEnum { - - /** - * GENERALIZATION - */ - GENERALIZATION("泛化-继承", Sets.newHashSet("<|--","--|>")), - REALIZE("实现",Sets.newHashSet("..|>","<|..")), - ; - - private String desc; - private Set tagSet; - ClassRelationEnum(String desc, Set tagSet){ - this.desc = desc; - this.tagSet = tagSet; - } - - public String getDesc() { - return desc; - } - - public Set getTagSet() { - return tagSet; - } - - /** - * 解析类间关系 - * @param content - * @return - */ - public static Map parseRelation(String content){ - AtomicReference classRelationEnum = new AtomicReference<>(); - for (ClassRelationEnum relationEnum : ClassRelationEnum.values()){ - relationEnum.getTagSet().forEach(tag->{ - if(content.contains(tag)){ - classRelationEnum.set(relationEnum); - } - }); - } - ClassRelationEnum relationEnum = classRelationEnum.get(); - if(relationEnum == null){ - return null; - } - Map map = new HashMap<>(); - String className = getChild(content); - if (!StringUtils.isEmpty(className)) { - map.put("class",className); - } - if(relationEnum.name().equals(ClassRelationEnum.GENERALIZATION.name())){ - map.put("relation"," extends "+getSuper(content)); - } - if(relationEnum.name().equals(ClassRelationEnum.REALIZE.name())){ - map.put("relation"," implements "+getSuper(content)); - } - - return map; - } - - /** - * 获取父类或者接口 - * @param content - * @return - */ - private static String getSuper(String content){ - if(content.contains("<|--")){ - return content.trim().split("<\\|--")[0]; - } - if(content.contains("--|>")){ - return content.trim().split("--\\|>")[1]; - } - if(content.contains("..|>")){ - return content.trim().split("..\\|>")[1]; - } - if(content.contains("<|..")){ - return content.trim().split("<\\|..")[0]; - } - return null; - } - - - /** - * 获取父类或者接口 - * @param content - * @return - */ - private static String getChild(String content){ - if(content.contains("<|--")){ - return content.trim().split("<\\|--")[1]; - } - if(content.contains("--|>")){ - return content.trim().split("--\\|>")[0]; - } - if(content.contains("..|>")){ - return content.trim().split("..\\|>")[0]; - } - if(content.contains("<|..")){ - return content.trim().split("<\\|..")[1]; - } - return null; - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/CompTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/CompTypeEnum.java deleted file mode 100644 index 0b6cc82..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/CompTypeEnum.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description:组件类型 - * date: 2021/12/23 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum CompTypeEnum { - - TOOL("tool","工具类组件"), - //默认 - SPRING("spring","spring容器类组件"), - DUBBO_API("dubbo-api","dubbo对外暴露api"), - PACKAGE_PRIVATE("feign-api","spring cloud 对外暴露api"), - ; - private String compTag; - private String compDesc; - CompTypeEnum(String compTag, String compDesc){ - this.compTag = compTag; - this.compDesc = compDesc; - } - - public String getCompTag() { - return compTag; - } - - public String getCompDesc() { - return compDesc; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainDerivedElementEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainDerivedElementEnum.java deleted file mode 100644 index fff2bc3..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainDerivedElementEnum.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description:领域派生类枚举 - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum DomainDerivedElementEnum { - DTO("dto","数据传输对象"), - FACADE("facade","api门面接口"), - FEIGN("feign","api门面接口"), - ENUM("enum","api 枚举包"), - FACADE_IMPL("facadeimpl","api门面接口实现"), - DTOBO_CONVERT("convert","dto-bo相互转换mapstruct接口"), - DOBO_CONVERT("converter","do-bo相互转换mapstruct接口"), - VOBO_CONVERT("convertervobo","vo-bo相互转换mapstruct接口"), - VO("vo","视图传输对象"), - CONTROLLER("controller","控制器"), - DTO2DTO_CONVERT("convertordto","dto-to相互转换mapstruct接口"), - - ; - private String element; - private String desc; - DomainDerivedElementEnum(String element, String desc){ - this.element = element; - this.desc = desc; - } - - - public String getElement() { - return element; - } - - public String getDesc() { - return desc; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainElementEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainElementEnum.java deleted file mode 100644 index d6d9ec2..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/DomainElementEnum.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum DomainElementEnum { - VALUEOBJECT("valueobject,config,vo","值对象"), - CONFIG("config","值对象"), - ENUM("enum","值对象"), - BO("bo","领域实体"), - SERVICE("service","领域服务"), - GATAWAY("gataway","领域网关服务"), - MSGBODY("msgbody","事件消息体"), - EVENT("event","事件"), - FACTORY("factory","领域工厂"), - REPOSITORY("repository","领域仓库"), - ACL("acl","适配器防腐层"), - ADAPTER("adapter","适配器防腐层"), - ADAPTER_SERVICE("adapterservice","适配器防腐层"), - COMMAND("command,cmd","命令"), - EXECUTOR("executor,exe,exeservice,exehandler","执行器"), - APP_LISTENER("mqlistener","监听器"), - MQ_CONSUMER("mqconsumer","消息消费者"), - MQ_PRODUCER("mqproducer","消息生产者"), - MQ_HANDLER("mqhandler","消息处理器"), - CACHE("cache","缓存"), - - GATAWAY_IMPL("gatawayimpl","领域网关服务实现"), - REPOSITORY_IMPL("repositoryimpl","领域仓库实现"), - ACL_IMPL("aclimpl","适配器防腐层实现"), - ADAPTER_IMPL("aclimpl","适配器防腐层实现"), - ADAPTER_ACL_IMPL("adapterimpl,aclimpl","适配器防腐层实现"), - - //这里的mapper只是为了辅助代码生成,严格来说不算领域元素 - DYNAMIC_MAPPER("mapper","动态mapper"), - - - - ; - private String element; - private String desc; - DomainElementEnum(String element, String desc){ - this.element = element; - this.desc = desc; - } - - - public String getElement() { - return element; - } - - public String getDesc() { - return desc; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/MethodReturnClassTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/MethodReturnClassTypeEnum.java deleted file mode 100644 index e71b708..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/MethodReturnClassTypeEnum.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description:方法返回类型 - * date: 2021/10/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum MethodReturnClassTypeEnum { - PAGE("page","page包装对象"), - LIST("list","list包装对象"), - SET("set","set集合对象"), - ONE("one","one单条对象"), - VOID("void","void空对象"), - OTHER("other","其他返回对象"), - ; - private String code; - private String desc; - MethodReturnClassTypeEnum(String code, String desc){ - this.code = code; - this.desc = desc; - } - - - public String getCode() { - return code; - } - - public String getDesc() { - return desc; - } - - /** - * 根据返回类型判断返回什么类型的对象 - * @param returnClassStr - * @return - */ - public static String getReturnType(String returnClassStr){ - - if(returnClassStr.contains(MethodReturnClassTypeEnum.VOID.getCode())){ - return MethodReturnClassTypeEnum.VOID.getCode(); - } - - if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.PAGE.getCode())){ - return MethodReturnClassTypeEnum.PAGE.getCode(); - } - - if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.LIST.getCode())){ - return MethodReturnClassTypeEnum.LIST.getCode(); - } - - - if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.SET.getCode())){ - return MethodReturnClassTypeEnum.SET.getCode(); - } - - if(returnClassStr.toLowerCase().contains(TemplateFileEnum.VO.getTempFileName()) - || returnClassStr.toLowerCase().contains(TemplateFileEnum.DTO.getTempFileName())){ - return MethodReturnClassTypeEnum.VOID.getCode(); - - } - - return MethodReturnClassTypeEnum.OTHER.getCode(); - - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ModuleEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ModuleEnum.java deleted file mode 100644 index 187ff70..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/ModuleEnum.java +++ /dev/null @@ -1,400 +0,0 @@ -package com.coderman.codemaker.enums; - - -import com.coderman.codemaker.bean.GlobalConstant; -import com.google.common.collect.Sets; - -import java.util.Set; - -/** - * Description: 项目模块枚举 - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum ModuleEnum { - /** - * - */ - SPRING_BOOT_WEB("springboot","codemaker-springboot", - Sets.newHashSet(TemplateFileEnum.APPLICATION.getTempFileName(), - TemplateFileEnum.MAPPER_XML.getTempFileName(), - TemplateFileEnum.MAPPER.getTempFileName(), - TemplateFileEnum.MAPPER_DDD.getTempFileName(), - TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), - - TemplateFileEnum.CONTROLLER.getTempFileName(), - TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), - TemplateFileEnum.SERVICE_IMPL.getTempFileName(), - TemplateFileEnum.SERVICE.getTempFileName(), - TemplateFileEnum.VO.getTempFileName(), - TemplateFileEnum.VO_DDD.getTempFileName(), - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.ENTITY.getTempFileName(), - TemplateFileEnum.DATA_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), - - TemplateFileEnum.TEST.getTempFileName(), - TemplateFileEnum.VALUE_OBJECT.getTempFileName(), - TemplateFileEnum.ENUM.getTempFileName(), - TemplateFileEnum.CMD.getTempFileName(), - TemplateFileEnum.EXE.getTempFileName(), - TemplateFileEnum.EXE_IMPL.getTempFileName(), - TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), - TemplateFileEnum.GATAWAY.getTempFileName(), - TemplateFileEnum.REPOSITORY.getTempFileName(), - TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), - TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), - TemplateFileEnum.ACL.getTempFileName(), - TemplateFileEnum.ACL_IMPL.getTempFileName(), - TemplateFileEnum.ACL_PARAM.getTempFileName(), - TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), - TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), - TemplateFileEnum.VOBO_CONVERT.getTempFileName(), - TemplateFileEnum.FACTORY.getTempFileName(), - TemplateFileEnum.MESSAGE_BODY.getTempFileName(), - TemplateFileEnum.EVENT_BODY.getTempFileName(), - TemplateFileEnum.CONVERT.getTempFileName(), - TemplateFileEnum.DOBO_CONVERT.getTempFileName(), - - TemplateFileEnum.MQ_CONSUMER.getTempFileName(), - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MQ_LISTENER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.CACHE.getTempFileName(), - - TemplateFileEnum.BASE_EVENT.getTempFileName(), - TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON, - TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())), - - - - - - /** - * springcloud feign - */ - SC_FEIGN_API("springcloud","springcloud-api", Sets.newHashSet( - TemplateFileEnum.FEIGN.getTempFileName(), - TemplateFileEnum.FEIGN_DDD.getTempFileName(), - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.API_ENUM.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - - /** - * - */ - SC_FEIGN_PROVIDER("springcloud","springcloud-provider", - Sets.newHashSet(TemplateFileEnum.APPLICATION.getTempFileName(), - TemplateFileEnum.MAPPER_XML.getTempFileName(), - TemplateFileEnum.MAPPER.getTempFileName(), - TemplateFileEnum.MAPPER_DDD.getTempFileName(), - TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), - - TemplateFileEnum.CONTROLLER.getTempFileName(), - TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), - TemplateFileEnum.SERVICE_IMPL.getTempFileName(), - TemplateFileEnum.SERVICE.getTempFileName(), - /* TemplateFileEnum.VO.getTempFileName(), - TemplateFileEnum.VO_DDD.getTempFileName(),*/ - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.ENTITY.getTempFileName(), - TemplateFileEnum.DATA_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), - - TemplateFileEnum.TEST.getTempFileName(), - TemplateFileEnum.VALUE_OBJECT.getTempFileName(), - TemplateFileEnum.ENUM.getTempFileName(), - TemplateFileEnum.CMD.getTempFileName(), - TemplateFileEnum.EXE.getTempFileName(), - TemplateFileEnum.EXE_IMPL.getTempFileName(), - TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), - TemplateFileEnum.GATAWAY.getTempFileName(), - TemplateFileEnum.REPOSITORY.getTempFileName(), - TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), - TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), - TemplateFileEnum.ACL.getTempFileName(), - TemplateFileEnum.ACL_IMPL.getTempFileName(), - TemplateFileEnum.ACL_PARAM.getTempFileName(), - TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), - TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), -/* - TemplateFileEnum.VOBO_CONVERT.getTempFileName(), -*/ - TemplateFileEnum.FACTORY.getTempFileName(), - TemplateFileEnum.MESSAGE_BODY.getTempFileName(), - TemplateFileEnum.EVENT_BODY.getTempFileName(), - TemplateFileEnum.CONVERT.getTempFileName(), - TemplateFileEnum.DOBO_CONVERT.getTempFileName(), - - TemplateFileEnum.MQ_CONSUMER.getTempFileName(), - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MQ_LISTENER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.CACHE.getTempFileName(), - - TemplateFileEnum.FEIGN.getTempFileName(), - TemplateFileEnum.FEIGN_DDD.getTempFileName(), - TemplateFileEnum.FEIGN_CONTROLLER.getTempFileName(), - TemplateFileEnum.FEIGN_CONTROLLER_DDD.getTempFileName(), - - TemplateFileEnum.BASE_EVENT.getTempFileName(), - TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON, - TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())), - - - - - - - - /** - * - */ - DUBBO_API("dubbo","dubbo-api", Sets.newHashSet( - TemplateFileEnum.FACADE.getTempFileName(), - TemplateFileEnum.FACADE_DDD.getTempFileName(), - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.API_ENUM.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - /** - * - */ - DUBBO_COMMON("dubbo","dubbo-common", Sets.newHashSet( - TemplateFileEnum.MAPPER_XML.getTempFileName(), - TemplateFileEnum.MAPPER.getTempFileName(), - TemplateFileEnum.MAPPER_DDD.getTempFileName(), - TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), - - TemplateFileEnum.DATA_OBJECT.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - /** - * - */ - DUBBO_CORE("dubbo","dubbo-core", Sets.newHashSet( - TemplateFileEnum.SERVICE.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), - - TemplateFileEnum.CONVERT.getTempFileName(), - TemplateFileEnum.SERVICE_IMPL.getTempFileName(), - TemplateFileEnum.TEST.getTempFileName(), - TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), - TemplateFileEnum.FACADE_IMPL.getTempFileName(), - TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName(), - - TemplateFileEnum.APPLICATION.getTempFileName(), - TemplateFileEnum.FACADE_AOP.getTempFileName(), - TemplateFileEnum.VALUE_OBJECT.getTempFileName(), - TemplateFileEnum.ENUM.getTempFileName(), - TemplateFileEnum.CMD.getTempFileName(), - TemplateFileEnum.EXE.getTempFileName(), - TemplateFileEnum.EXE_IMPL.getTempFileName(), - TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), - TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), - TemplateFileEnum.GATAWAY.getTempFileName(), - TemplateFileEnum.REPOSITORY.getTempFileName(), - TemplateFileEnum.FACTORY.getTempFileName(), - TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), - TemplateFileEnum.ACL.getTempFileName(), - TemplateFileEnum.ACL_IMPL.getTempFileName(), - TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), - TemplateFileEnum.DOBO_CONVERT.getTempFileName(), - TemplateFileEnum.MESSAGE_BODY.getTempFileName(), - TemplateFileEnum.EVENT_BODY.getTempFileName(), - TemplateFileEnum.ACL_PARAM.getTempFileName(), - - TemplateFileEnum.BASE_EVENT.getTempFileName(), - TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName(), - - TemplateFileEnum.MQ_CONSUMER.getTempFileName(), - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MQ_LISTENER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.CACHE.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - - - )), - - - /** - * - */ - COLA_FEIGN_API("cola","cola-feign-api", Sets.newHashSet( - TemplateFileEnum.FEIGN.getTempFileName(), - TemplateFileEnum.FEIGN_DDD.getTempFileName(), - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.API_ENUM.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - - /** - * - */ - COLA_ADAPTER("cola","cola-adapter", Sets.newHashSet( - TemplateFileEnum.CONTROLLER.getTempFileName(), - TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), - TemplateFileEnum.VO.getTempFileName(), - TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), - TemplateFileEnum.VOBO_CONVERT.getTempFileName(), - TemplateFileEnum.VO_DDD.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - - )), - - /** - * - */ - COLA_DOMAIN("cola","cola-domain", Sets.newHashSet( - TemplateFileEnum.SERVICE.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), - TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), - TemplateFileEnum.SERVICE.getTempFileName(), - TemplateFileEnum.GATAWAY.getTempFileName(), - TemplateFileEnum.FACTORY.getTempFileName(), - TemplateFileEnum.REPOSITORY.getTempFileName(), - TemplateFileEnum.VALUE_OBJECT.getTempFileName(), - TemplateFileEnum.MESSAGE_BODY.getTempFileName(), - TemplateFileEnum.EVENT_BODY.getTempFileName(), - TemplateFileEnum.BASE_EVENT.getTempFileName(), - TemplateFileEnum.ENUM.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - - )), - /** - * - */ - COLA_CLIENT("cola","cola-client", Sets.newHashSet( - TemplateFileEnum.DTO.getTempFileName(), - TemplateFileEnum.DTO_DDD.getTempFileName(), - TemplateFileEnum.FACADE.getTempFileName(), - TemplateFileEnum.FACADE_DDD.getTempFileName(), - TemplateFileEnum.API_ENUM.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - - /** - * - */ - COLA_INFRAST("cola","cola-infrast", Sets.newHashSet( - TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), - TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), - TemplateFileEnum.MAPPER_XML.getTempFileName(), - TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), - - TemplateFileEnum.MAPPER.getTempFileName(), - TemplateFileEnum.MAPPER_DDD.getTempFileName(), - TemplateFileEnum.DATA_OBJECT.getTempFileName(), - TemplateFileEnum.DOBO_CONVERT.getTempFileName(), - TemplateFileEnum.SERVICE_IMPL.getTempFileName(), - TemplateFileEnum.ACL.getTempFileName(), - TemplateFileEnum.ACL_IMPL.getTempFileName(), - TemplateFileEnum.ACL_PARAM.getTempFileName(), - - TemplateFileEnum.CACHE.getTempFileName(), - - TemplateFileEnum.MQ_CONSUMER.getTempFileName(), - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - - /** - * - */ - COLA_APP("cola","cola-app", Sets.newHashSet( - TemplateFileEnum.TEST.getTempFileName(), - - TemplateFileEnum.FACADE_IMPL.getTempFileName(), - TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName(), - TemplateFileEnum.CMD.getTempFileName(), - TemplateFileEnum.CONVERT.getTempFileName(), - TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), - TemplateFileEnum.EXE.getTempFileName(), - TemplateFileEnum.EXE_IMPL.getTempFileName(), - TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), - TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), - TemplateFileEnum.FACADE_AOP.getTempFileName(), - TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName(), - TemplateFileEnum.MQ_LISTENER.getTempFileName(), - GlobalConstant.SINGLE_CLASS_COMMON - )), - - - /** - * - */ - COLA_API_DOC("cola","api-doc", Sets.newHashSet( - TemplateFileEnum.API_HTTP.getTempFileName(), - TemplateFileEnum.API_RPC.getTempFileName() - )), - - /** - * - */ - COLA_START("cola","cola-start", Sets.newHashSet( - GlobalConstant.SINGLE_CLASS_COMMON - )), - - - /** - * - */ - DUBBO_API_DOC("dubbo","api-doc", Sets.newHashSet( - TemplateFileEnum.API_RPC.getTempFileName() - )), - - /** - * - */ - SPRINGBOOT_API_DOC("springboot","api-doc", Sets.newHashSet( - TemplateFileEnum.API_HTTP.getTempFileName() - )), - - /** - * - */ - SC_API_DOC("springcloud","api-doc", Sets.newHashSet( - TemplateFileEnum.API_HTTP.getTempFileName(), - TemplateFileEnum.API_RPC.getTempFileName() - )), - - ; - private String appName; - private String moduleName; - private Set templateFileSet; - ModuleEnum(String appName, String moduleName, Set templateFileSet){ - this.appName = appName; - this.moduleName = moduleName; - this.templateFileSet = templateFileSet; - } - - public String getAppName() { - return appName; - } - - public String getModuleName() { - return moduleName; - } - - public Set getTemplateFileSet() { - return templateFileSet; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/TemplateFileEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/TemplateFileEnum.java deleted file mode 100644 index 4fbbc5e..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/TemplateFileEnum.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * description: TemplateFileEnum
- * date: 2020/7/7 23:44
- * author: coderman
- * version: 1.0
- * 设置要生成的模板文件的类型 - */ -public enum TemplateFileEnum { - ENTITY("entity"), - MAPPER("mapper"), - POM("pom"), - CONTROLLER("controller"), - MAPPER_XML("mapperxml"), - SERVICE("service"), - SERVICE_IMPL("serviceImpl"), - VO("vo"), - BASE_CONTROLLER("baseController"), - SPRING_APPLICATION_CONTEXT("SpringApplicationContext"), - TEST("test"), - APPLICATION("application"), - DTO("dto"), - FACADE("facade"), - DATA_OBJECT("do"), - FACADE_IMPL("facadeImpl"), - BUSINESS_OBJECT("bo"), - CONVERT("convert"), - DTOBO_CONVERT("dtoboconvert"), - DTO2DTO_CONVERT("dto2dtoconvert"), - DOBO_CONVERT("doboconvert"), - FACADE_AOP("facadeaop"), - GATAWAY("gataway"), - REPOSITORY("repository"), - REPOSITORY_IMPL("repositoryimpl"), - FACTORY("factory"), - ENUM("enum"), - API_ENUM("apienum"), - MESSAGE_BODY("msgbody"), - EVENT_BODY("event"), - GATAWAY_IMPL("gatawayimpl"), - ACL("acl"), - ACL_IMPL("aclimpl"), - ACL_REQ("aclreq"), - ACL_RES("aclres"), - ACL_PARAM("aclparam"), - CMD("cmd"), - EXE("exe"), - EXE_IMPL("exeimpl"), - EXE_ABSTRACT("abstractexe"), - VALUE_OBJECT("valueobject"), - BUSINESS_OBJECT_DDD("boddd"), - FACADE_DDD("facadeddd"), - FACADE_IMPL_DDD("facadeimplddd"), - CONTROLLER_DDD("controllerddd"), - VO_DDD("voddd"), - VOBO_CONVERT("voboconvert"), - DTO_DDD("dtoddd"), - MQ_CONSUMER("mqconsumer"), - MQ_HANDLER("mqhandler"), - MQ_LISTENER("mqlistener"), - MQ_PRODUCER("mqproducer"), - APP_EVENT_PUBLISHER("AppEventPublisher"), - BASE_EVENT("BaseEvent"), - MAPPER_DDD("mapperddd"), - MAPPER_XML_DDD("mapperxmlddd"), - API_HTTP("http"), - API_RPC("rpc"), - CACHE("cache"), - - FEIGN("feign"), - FEIGN_DDD("feignddd"), - FEIGN_CONTROLLER("feigncontroller"), - FEIGN_CONTROLLER_DDD("feigncontrollerddd"), - - - ; - private String tempFileName; - TemplateFileEnum(String tempFileName){ - this.tempFileName = tempFileName; - } - - public String getTempFileName() { - return tempFileName; - } - - - /** - * 判断类名是否是bo,vo,dto,entity - * @param className - * @return - */ - public static boolean isClassModel(String className){ - String classType = className.toLowerCase(); - return classType.endsWith(TemplateFileEnum.VO.getTempFileName()) - || classType.endsWith(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName()) - || classType.endsWith(TemplateFileEnum.DTO.getTempFileName()) - || classType.endsWith(TemplateFileEnum.DATA_OBJECT.getTempFileName()) - || classType.endsWith(TemplateFileEnum.ENTITY.getTempFileName()); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/VisibilityEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/VisibilityEnum.java deleted file mode 100644 index 1bbcab1..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/VisibilityEnum.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.coderman.codemaker.enums; - -/** - * Description: - * date: 2021/6/28 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum VisibilityEnum { - - PRIVATE("private","-"), - PROTECT("protected","#"), - PUBLIC("public","+"), - PACKAGE_PRIVATE("package private","~"), - ; - private String visibility; - private String tag; - VisibilityEnum(String visibility, String tag){ - this.visibility = visibility; - this.tag = tag; - } - - public String getVisibility() { - return visibility; - } - - public String getTag() { - return tag; - } - - /** - * 获取修饰符 - * @param content - * @return - */ - public static String getVisibilityStr(String content) { - if (content.startsWith(VisibilityEnum.PUBLIC.tag)) { - return VisibilityEnum.PUBLIC.visibility; - } - - if (content.startsWith(VisibilityEnum.PRIVATE.tag)) { - return VisibilityEnum.PRIVATE.visibility; - } - - if (content.startsWith(VisibilityEnum.PROTECT.tag)) { - return VisibilityEnum.PROTECT.visibility; - } - - if (content.startsWith(VisibilityEnum.PACKAGE_PRIVATE.tag)) { - return VisibilityEnum.PACKAGE_PRIVATE.visibility; - } - return VisibilityEnum.PRIVATE.visibility; - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/DecorateTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/DecorateTypeEnum.java deleted file mode 100644 index 0b13ed4..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/DecorateTypeEnum.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.coderman.codemaker.enums.dynamic; - -/** - * Description: - * date: 2021/11/24 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum DecorateTypeEnum { - CLASS_ANNOTATION("CLASS_ANNOTATION","类上加注解"), - CLASS_IMPL_INTERFACE("CLASS_IMPL","类加上实现接口"), - - METHOD_ANNOTATION("METHOD_ANNOTATION","方法上加注解"), - METHOD_RETURN_CLASS("METHOD_RETURN_CLASS","方法返回值类包装"), - METHOD_RETURN_PAGEDTO_CLASS("METHOD_RETURN_PAGEDTO_CLASS","方法分页类包装"), - - METHOD_RETURN_PAGEVO_CLASS("METHOD_RETURN_PAGEVO_CLASS","方法分页类包装"), - - ; - - private String code; - private String desc; - DecorateTypeEnum(String code, String desc){ - this.code = code; - this.desc = desc; - } - - public String getCode() { - return code; - } - - public String getDesc() { - return desc; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeLayerTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeLayerTypeEnum.java deleted file mode 100644 index 63cdd45..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeLayerTypeEnum.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.coderman.codemaker.enums.dynamic; - -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.google.common.collect.Sets; - -import java.util.Set; -import java.util.concurrent.atomic.AtomicReference; - -/** - * Description: 调用层有哪些调用入口枚举 - * date: 2021/10/16 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum InvokeLayerTypeEnum { - APP_RPC("app_rpc", Sets.newHashSet(TemplateFileEnum.FACADE.getTempFileName(), - TemplateFileEnum.EXE.getTempFileName(), - TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), - TemplateFileEnum.EXE_IMPL.getTempFileName(), - TemplateFileEnum.MQ_LISTENER.getTempFileName(), - "app_rpc" - )), - - APP_HTTP("app_http", Sets.newHashSet( - TemplateFileEnum.CONTROLLER.getTempFileName(), - "app_http") - ), - - DOMAIN("domain", Sets.newHashSet( - TemplateFileEnum.GATAWAY.getTempFileName(), - TemplateFileEnum.REPOSITORY.getTempFileName(), - TemplateFileEnum.SERVICE.getTempFileName(), - TemplateFileEnum.FACTORY.getTempFileName(), - "domain" - )), - INFRAST("infrast", Sets.newHashSet( - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MAPPER.getTempFileName(), - DomainElementEnum.ADAPTER.getElement(), - TemplateFileEnum.MQ_PRODUCER.getTempFileName(), - TemplateFileEnum.MQ_HANDLER.getTempFileName(), - TemplateFileEnum.MQ_CONSUMER.getTempFileName(), - "infrast" - )), - - ACL_API("aclapi",Sets.newHashSet("aclapi")) - - ; - private String code; - private Set classTypeSet; - InvokeLayerTypeEnum(String code, Set classTypeSet){ - this.code = code; - this.classTypeSet = classTypeSet; - } - - - public String getCode() { - return code; - } - - public Set getClassTypeSet() { - return classTypeSet; - } - - /** - * 根据类名获取类所在层 - * @param className - * @return - */ - public static String getLayerCode(String className){ - AtomicReference layerName = new AtomicReference<>(""); - for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ - layerTypeEnum.getClassTypeSet().forEach(classType->{ - if(className.toLowerCase().endsWith(classType)){ - layerName.set(layerTypeEnum.code); - } - }); - } - return layerName.get(); - } - - - - /** - * 根据类名获取类所在层 - * @param invokeLayerStr - * @return - */ - public static String getInvokeLayerCode(String invokeLayerStr){ - AtomicReference layerName = new AtomicReference<>(""); - for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ - layerTypeEnum.getClassTypeSet().forEach(classType->{ - if(invokeLayerStr.toLowerCase().startsWith(classType)){ - layerName.set(layerTypeEnum.code); - } - }); - } - return layerName.get(); - } - - /** - * 根据类名获取类所在层 - * @param invokeLayerStr - * @return - */ - public static String getProvideLayerCode(String invokeLayerStr){ - AtomicReference layerName = new AtomicReference<>(""); - for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ - layerTypeEnum.getClassTypeSet().forEach(classType->{ - if(invokeLayerStr.toLowerCase().endsWith(classType)){ - layerName.set(layerTypeEnum.code); - } - }); - } - return layerName.get(); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeSceneTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeSceneTypeEnum.java deleted file mode 100644 index 579a1f8..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/InvokeSceneTypeEnum.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.coderman.codemaker.enums.dynamic; - -import org.apache.commons.lang3.StringUtils; - -/** - * Description:调用场景枚举 - * date: 2021/10/16 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum InvokeSceneTypeEnum { - - APP_RPC_TO_DOMAIN("app_rpc2domain","应用层->领域层"), - APP_HTTP_TO_DOMAIN("app_http2domain","应用层->领域层"), - APP_RPC_TO_SELF("app_rpc2self","应用层->应用层"), - APP_HTTP_TO_SELF("app_http2self","应用层->应用层"), - APP_RPC_TO_INFRAST("app_rpc2infrast","应用层->基础设施层"), - APP_HTTP_TO_INFRAST("app_http2infrast","应用层->基础设施层"), - - DOMAIN_TO_INFRAST("domain2infrast","领域层->基础设施层"), - DOMAIN_TO_SELF("domain2self","领域层->领域层"), - - INFRAST_TO_SELF("infrast2self","基础设施层->依赖服务"), - INFRAST_TO_API("infrast2api","基础设施层->依赖服务层"), - - ; - private String code; - private String desc; - InvokeSceneTypeEnum(String code, String desc){ - this.code = code; - this.desc = desc; - } - - - public String getCode() { - return code; - } - - public String getDesc() { - return desc; - } - - - /** - * 根据调用类和被调用类判断调用场景 - * @param invokeClassName - * @param providerClassName - * @return - */ - public static String getInvokeScene(String invokeClassName,String providerClassName){ - String invokerLayer = InvokeLayerTypeEnum.getLayerCode(invokeClassName); - String providerLayer = InvokeLayerTypeEnum.getLayerCode(providerClassName); - //这里增加一个infrast 到下游调用方的调用层类型判断 - if(invokerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode()) && StringUtils.isEmpty(providerLayer)){ - return InvokeSceneTypeEnum.INFRAST_TO_API.code; - } - if(StringUtils.isEmpty(invokerLayer) || StringUtils.isEmpty(providerLayer)){ - return null; - } - - for (InvokeSceneTypeEnum invokeSceneTypeEnum : InvokeSceneTypeEnum.values()){ - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_RPC.getCode())){ - return InvokeSceneTypeEnum.APP_RPC_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_HTTP.getCode())){ - return InvokeSceneTypeEnum.APP_HTTP_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.DOMAIN.getCode())){ - return InvokeSceneTypeEnum.DOMAIN_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode())){ - return InvokeSceneTypeEnum.INFRAST_TO_SELF.getCode(); - } - - if(invokeSceneTypeEnum.getCode().contains(invokerLayer) && invokeSceneTypeEnum.getCode().contains(providerLayer)){ - return invokeSceneTypeEnum.getCode(); - } - } - - - return null; - } - - /** - * 根据调用方向判断调用场景 - * @param invokeSceneStr - * @param - * @return - */ - public static String getInvokeSceneV2(String invokeSceneStr){ - - String invokerLayer = InvokeLayerTypeEnum.getInvokeLayerCode(invokeSceneStr); - String providerLayer = InvokeLayerTypeEnum.getProvideLayerCode(invokeSceneStr); - - if(invokerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode()) && StringUtils.isEmpty(providerLayer)){ - return InvokeSceneTypeEnum.INFRAST_TO_API.code; - } - - - - if(StringUtils.isEmpty(invokerLayer) || StringUtils.isEmpty(providerLayer)){ - return null; - } - - for (InvokeSceneTypeEnum invokeSceneTypeEnum : InvokeSceneTypeEnum.values()){ - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_RPC.getCode())){ - return InvokeSceneTypeEnum.APP_RPC_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_HTTP.getCode())){ - return InvokeSceneTypeEnum.APP_HTTP_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.DOMAIN.getCode())){ - return InvokeSceneTypeEnum.DOMAIN_TO_SELF.getCode(); - } - - if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode())){ - return InvokeSceneTypeEnum.INFRAST_TO_SELF.getCode(); - } - - if(invokeSceneTypeEnum.getCode().contains(invokerLayer) && invokeSceneTypeEnum.getCode().contains(providerLayer)){ - return invokeSceneTypeEnum.getCode(); - } - } - - - return null; - } - - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/ReadWriteTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/ReadWriteTypeEnum.java deleted file mode 100644 index 68eb262..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/enums/dynamic/ReadWriteTypeEnum.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.coderman.codemaker.enums.dynamic; - -import com.google.common.collect.Sets; -import org.apache.commons.lang3.StringUtils; - -import java.util.Set; -import java.util.concurrent.atomic.AtomicReference; - -/** - * Description:读写类型枚举 - * date: 2021/10/16 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public enum ReadWriteTypeEnum { - READ("read","读场景"), - WRITE("write","写场景"), - INSERT("insert","插入"), - UPDATE("update","更新"), - DELETE("delete","删除"), - ; - private String code; - private String desc; - - //支持业务领域动词注册功能 - private static Set readSet = Sets.newHashSet("search","get","find","select","load","read","query","export"); - - private static Set writeSet = Sets.newHashSet("write","regist","update","create","save","insert","delete","init","import"); - - - private static Set insertSet = Sets.newHashSet("batchinsert","insertbatch","savebatch","save","batchsave"); - - private static Set updateSet = Sets.newHashSet("batchupdate","updatebatch","update"); - - private static Set deleteSet = Sets.newHashSet("deletebatch","batchdelete","update"); - - ReadWriteTypeEnum(String code, String desc){ - this.code = code; - this.desc = desc; - } - - - public String getCode() { - return code; - } - - public String getDesc() { - return desc; - } - - - /** - * 根据方法名判断方法的读写属性 - * @param methodName - * @return - */ - public static String getCodeByMethod(String methodName){ - AtomicReference code = new AtomicReference<>(""); - readSet.stream().forEach(v->{ - if(methodName.toLowerCase().startsWith(v)){ - code.set(ReadWriteTypeEnum.READ.getCode()); - } - }); - if(StringUtils.isNotEmpty(code.get())){ - return code.get(); - } - writeSet.stream().forEach(v->{ - if(methodName.toLowerCase().startsWith(v)){ - code.set(ReadWriteTypeEnum.WRITE.getCode()); - } - }); - return code.get(); - } - - - /** - * 判断是否是保存 - * @param methodName - * @return - */ - public static boolean isInsert(String methodName){ - AtomicReference insertTag = new AtomicReference<>(false); - insertSet.stream().forEach(v->{ - if(methodName.toLowerCase().startsWith(v)){ - insertTag.set(true); - } - }); - return insertTag.get(); - } - - /** - * 判断是否是更新 - * @param methodName - * @return - */ - public static boolean isUpdate(String methodName){ - AtomicReference insertTag = new AtomicReference<>(false); - updateSet.stream().forEach(v->{ - if(methodName.toLowerCase().startsWith(v)){ - insertTag.set(true); - } - }); - return insertTag.get(); - } - - /** - * 判断是否是删除 - * @param methodName - * @return - */ - public static boolean isDelete(String methodName){ - AtomicReference insertTag = new AtomicReference<>(false); - deleteSet.stream().forEach(v->{ - if(methodName.toLowerCase().startsWith(v)){ - insertTag.set(true); - } - }); - return insertTag.get(); - } - - /** - * 根据方法名推导出可能的属性 - * 先对 read场景推导 - * @return - */ - public static String getSomeFieldFromMethodName(String methodName){ - final String[] tempMethodName = {methodName}; - readSet.forEach(read->{ - tempMethodName[0] = tempMethodName[0].replace(read,""); - }); - String fieldName = tempMethodName[0].replace("By",""); - if(!StringUtils.isEmpty(fieldName)){ - return fieldName; - } - return null; - } - - /** - * 将自定义的读操作统一语言注册到默认的读操作定义集合中 - * @param readDslSet - */ - public static void putReadDSL(Set readDslSet){ - readSet.addAll(readDslSet); - } - - /** - * 将自定义的读操作统一语言注册到默认的写操作定义集合中 - * @param writeDslSet - */ - public static void putWriteDSL(Set writeDslSet){ - writeSet.addAll(writeDslSet); - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHandleUtils.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHandleUtils.java deleted file mode 100644 index 2847a64..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHandleUtils.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.coderman.codemaker.utils; - -import com.google.common.collect.Sets; -import org.apache.commons.lang3.StringUtils; - -import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Description: - * date: 2021/10/12 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class StringHandleUtils { - - private static Set basicTypeSet = Sets.newHashSet("Integer","int" - ,"long","Long" - ,"String", - "Float","float", - "Boolean","boolean", - "Short","short" - ,"Double","double","[]","Object"); - - /** - * 严格基本数据类型 - */ - private static Set strictBasicTypeSet = Sets.newHashSet("int" - ,"long" - ,"float" - ,"boolean" - ,"short" - ,"double"); - - - /** - * 判断字符串中是否包含中文 - * @param str - * 待校验字符串 - * @return 是否为中文 - * @warn 不能校验是否为中文标点符号 - */ - public static boolean isContainChinese(String str) { - Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); - Matcher m = p.matcher(str); - if (m.find()) { - return true; - } - return false; - } - - /** - * 通过变量类型获取变量对应的变量名 - * @param paramType - * @return - */ - public static String getParamVar(String paramType){ - if(StringUtils.isEmpty(paramType.trim())){ - return "null"; - } - if(paramType.contains("List<")){ - String paramModel = paramType.trim().replace("List<","").replace(">",""); - return paramModel.trim().substring(0,1).toLowerCase()+paramModel.substring(1)+"List"; - } - if(paramType.contains("Set<")){ - String paramModel = paramType.trim().replace("List<","").replace(">",""); - return paramModel.trim().substring(0,1).toLowerCase()+paramModel.substring(1)+"Set"; - } - - return paramType.trim().substring(0,1).toLowerCase()+paramType.substring(1); - } - - /** - * 判断参数是不是基本类型 - * @param paramType - * @return - */ - public static boolean isBasicType(String paramType){ - AtomicBoolean basicType = new AtomicBoolean(false); - basicTypeSet.forEach(str->{ - if(paramType.contains(str)){ - basicType.set(true); - } - }); - return basicType.get(); - } - - /** - * 判断参数是不是严格的基本类型 - * @param paramType - * @return - */ - public static boolean isStrictBasicType(String paramType){ - AtomicBoolean basicType = new AtomicBoolean(false); - strictBasicTypeSet.forEach(str->{ - if(paramType.contains(str)){ - basicType.set(true); - } - }); - return basicType.get(); - } - - - /** - * 将返回参数包装类型去掉 - * Result - * ResultDto - * ResultDataDto - * SdkResponse - * Response - * ResultDto - * ResultDto> - * SdkResponse - * @param paramType - * @return - */ - public static String getParamTypeNoWrapper(String paramType){ - boolean wrapper = paramType.contains("Result") || paramType.equals("Response"); - //如果是包装类型,但是却没有范型声明则返回null - if(wrapper){ - if(!paramType.contains("<")){ - return null; - } - String result = paramType.substring(paramType.indexOf("<")+1); - return result.substring(0,result.length() - 1); - } - return paramType; - } -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHelperUtils.java b/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHelperUtils.java deleted file mode 100644 index 809a64a..0000000 --- a/codemaker-parent/codemaker-api/src/main/java/com/coderman/codemaker/utils/StringHelperUtils.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.coderman.codemaker.utils; - -import java.util.regex.Pattern; - -/** - * Description: - * date: 2021/10/21 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class StringHelperUtils { - - private static Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); - - - /** - * 根据表名获取对应类名 - * @param tableName - * @return - */ - public static String getClassDOName(String tableName){ - String humpTableName = getHumpTableName(tableName); - return getHumpClassName(humpTableName); - } - - /** - * 获取表名对应的类名 - * eg: user_info->UserInfo - * staff_education_info->StaffEducationInfo - * - * @param humpTableName - * @return - */ - public static String getHumpClassName(String humpTableName){ - String resultName = humpTableName.substring(0,1).toUpperCase().concat(humpTableName.substring(1)); - return resultName; - } - - /** - * 获取表名对应的变量名 - * eg: user_info->userInfo - * staff_education_info->staffEducationInfo - * - * @param tableName - * @return - */ - private static String getHumpTableName(String tableName){ - String resultName = ""; - - if(!tableName.contains("_")){ - resultName = tableName; - }else { - String[] tableNameArr = tableName.split("_"); - int length = tableNameArr.length; - StringBuilder builder = new StringBuilder(); - - if(isNum(tableNameArr[length - 1])){ - if(length == 2){ - resultName = tableNameArr[0]; - }else { - builder.append(tableNameArr[0]); - for (int i = 1;i < length - 1;i++){ - String tag = tableNameArr[i].substring(0,1).toUpperCase().concat(tableNameArr[i].substring(1)); - builder.append(tag); - } - resultName = builder.toString(); - } - }else { - builder.append(tableNameArr[0]); - for (int i = 1;i < length;i++){ - String tag = tableNameArr[i].substring(0,1).toUpperCase().concat(tableNameArr[i].substring(1)); - builder.append(tag); - } - resultName = builder.toString(); - } - - } - return resultName; - } - - - private static boolean isNum(String str){ - return pattern.matcher(str).matches(); - } - -} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeSegmentEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeSegmentEnum.java new file mode 100644 index 0000000..0ba3f8e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeSegmentEnum.java @@ -0,0 +1,37 @@ +package com.tianhua.codemaker.enums; + +/** + * Description: + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum CodeSegmentEnum { + VALIDATE("validate","校验标示") + ; + + private String tag; + private String desc; + CodeSegmentEnum(String tag, String desc){ + this.tag = tag; + this.desc = desc; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAdapterWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAdapterWriteServiceImpl.java deleted file mode 100644 index 6519084..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAdapterWriteServiceImpl.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/7/6 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "colaAdapterWriteService") -public class ColaAdapterWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private CommonWriteService commonWriteService; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleAdapterPath()); - - //写vo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().endsWith("VO") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"VO"); - classContentBean.setChildPackageName("vo"); - classContentBean.setClassSuffix("VO.java"); - writeClassFile(classContentBean); - } - - //写vo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.vo"); - classContentBean.setClassSuffix("VO.java"); - writeRoute(classContentBean); - } - - //写controller - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER.getTempFileName())){ - - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().endsWith("Controller") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Controller"); - classContentBean.setChildPackageName("controller"); - classContentBean.setClassSuffix("Controller.java"); - writeClassFile(classContentBean); - } - - //写controller-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.controller"); - classContentBean.setClassSuffix("Controller.java"); - writeRoute(classContentBean); - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BASE_CONTROLLER.getTempFileName())){ - commonWriteService.writeBaseController(writeContentBean.getContent(),projectTemplateColaConfig.getModuleAdapterPath()); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAppWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAppWriteServiceImpl.java deleted file mode 100644 index a91b122..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaAppWriteServiceImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/7/6 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "colaAppWriteService") -public class ColaAppWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private AppServiceConfig appServiceConfig; - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private CommonWriteService commonWriteService; - - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleAppPath()); - - //写FacadeImpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACADE_IMPL.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("facadeimpl") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"FacadeImpl"); - classContentBean.setChildPackageName("app.facadeimpl"); - writeRoute(classContentBean); - } - - //写app.cmd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ - classContentBean.setChildPackageName("app.command"); - writeRoute(classContentBean); - } - //写app.exe - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ - classContentBean.setChildPackageName("app.executor"); - writeRoute(classContentBean); - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".app.convert"); - writeClassFileV2(classContentBean); - } - - //写app.listener - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_LISTENER.getTempFileName())){ - classContentBean.setChildPackageName("app.listener"); - writeRoute(classContentBean); - } - - /* //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())){ - commonWriteService.writeSpringApplicationContext(writeContentBean.getContent(),projectTemplateColaConfig.getModuleAppPath()); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeAppEventPublisher(writeContentBean.getContent(),projectTemplateColaConfig.getModuleAppPath()); - }*/ - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaClientWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaClientWriteServiceImpl.java deleted file mode 100644 index dd4dcc4..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaClientWriteServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/7/6 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "colaClientWriteService") -public class ColaClientWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private AppServiceConfig appServiceConfig; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleClientPath()); - - //写api.dto-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO_DDD.getTempFileName())){ - - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - writeRoute(classContentBean); - } - //写api.dto - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO.getTempFileName())){ - classContentBean.setChildPackageName("dto"); - classContentBean.setClassSuffix("DTO.java"); - writeDTO(classContentBean); - } - - //写api.facade - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACADE.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("facade") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Facade"); - classContentBean.setChildPackageName("api.facade"); - classContentBean.setClassSuffix("Facade.java"); - writeRoute(classContentBean); - } - - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("api.enums"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".api.enums"); - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") + "/api"; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateColaConfig.getModuleClientPath() + packagePath + "/" + fileName; - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaDomainWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaDomainWriteServiceImpl.java deleted file mode 100644 index 273e2b3..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaDomainWriteServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/7/6 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "colaDomainWriteService") -public class ColaDomainWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private CommonWriteService commonWriteService; - - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleDomainPath()); - - //写domain.bo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ - classContentBean.setChildPackageName("domain.bo"); - writeRoute(classContentBean); - } - - //写model.bo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("bo") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"BO"); - classContentBean.setChildPackageName("model.bo"); - classContentBean.setClassSuffix("BO.java"); - writeClassFile(classContentBean); - } - - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - //写domain.valueobject - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("domain.valueobject"); - writeRoute(classContentBean); - } - //写domain.msgbody - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.msgbody"); - writeRoute(classContentBean); - } - - //写domain.event - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.event"); - writeRoute(classContentBean); - } - - - //写domain.gataway - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway"); - writeRoute(classContentBean); - } - //写domain.repository - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.repository"); - writeRoute(classContentBean); - } - //写domain.factory - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.factory"); - writeRoute(classContentBean); - } - - //写service - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE.getTempFileName())){ - classContentBean.setChildPackageName("service"); - classContentBean.setClassSuffix("Service.java"); - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("service") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Service"); - writeClassFile(classContentBean); - } - - //写BaseEvent - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeBaseEvent(writeContentBean.getContent(),projectTemplateColaConfig.getModuleDomainPath()); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java deleted file mode 100644 index 9c6c09d..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/11/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ - -@Component(value = "colaFeignApiWriteService") -public class ColaFeignApiWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private AppServiceConfig appServiceConfig; - - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleFeignApiPath()); - //写api.dto-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写api.dto - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO.getTempFileName())){ - classContentBean.setChildPackageName("dto"); - classContentBean.setClassSuffix("DTO.java"); - writeDTO(classContentBean); - } - - - //写feign - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FEIGN.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("feign") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Feign"); - classContentBean.setChildPackageName("api.feign"); - classContentBean.setClassSuffix("Feign.java"); - writeRoute(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateColaConfig.getModuleFeignApiPath() + packagePath + "/" + fileName; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaInfrastWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaInfrastWriteServiceImpl.java deleted file mode 100644 index fb50502..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaInfrastWriteServiceImpl.java +++ /dev/null @@ -1,263 +0,0 @@ -package com.coderman.codemaker.app.cola; - -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/7/6 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "colaInfrastWriteService") -public class ColaInfrastWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private ProjectTemplateColaConfig projectTemplateColaConfig; - - @Autowired - private AppServiceConfig appServiceConfig; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleInfrastPath()); - - //写do class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DATA_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("dataobject"); - classContentBean.setClassSuffix("DO.java"); - writeDO(classContentBean); - } - //写mapper class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER.getTempFileName())){ - classContentBean.setChildPackageName("mapper"); - classContentBean.setClassSuffix("Mapper.java"); - writeMapper(classContentBean); - } - - //写mapper.xml - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_XML.getTempFileName())){ - classContentBean.setChildPackageName("mapper"); - classContentBean.setClassSuffix("Mapper.xml"); - writeMapperXml(classContentBean); - } - - //写domain.gataway.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("gatawayimpl"); - classContentBean.setClassPackageName(writeContentBean.getClassPackageName()+".gatawayimpl"); - - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.gatawayimpl"); - writeClassFileV2(classContentBean); - } - } - - //写domain.repository.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("repositoryimpl"); - classContentBean.setClassPackageName(writeContentBean.getClassPackageName()+".repositoryimpl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.repositoryimpl"); - writeClassFileV2(classContentBean); - } - } - - - //写infrast.acl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl"); - }else { - classContentBean.setChildPackageName("infrast.adapter"); - } - writeRoute(classContentBean); - } - //写infrast.acl.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl.impl"); - }else { - classContentBean.setChildPackageName("infrast.adapter.impl"); - } - writeRoute(classContentBean); - } - - //写acl.param - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ - writeClassFileV2(classContentBean); - } - //写acl.param.convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO2DTO_CONVERT.getTempFileName())){ - writeRoute(classContentBean); - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.dataconvert"); - writeClassFileV2(classContentBean); - } - - - //写serviceimpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.service.impl"); - classContentBean.setClassSuffix("ServiceImpl.java"); - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("serviceimpl") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"ServiceImpl"); - writeClassFile(classContentBean); - } - - //写infras.mq.consumer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_CONSUMER.getTempFileName())){ - classContentBean.setChildPackageName("mq.consumer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.consumer"); - - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.handler - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_HANDLER.getTempFileName())){ - classContentBean.setChildPackageName("mq.handler"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.handler"); - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.producer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_PRODUCER.getTempFileName())){ - classContentBean.setChildPackageName("mq.producer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.producer"); - writeClassFileV2(classContentBean); - } - } - - - //写infrast.dao.mapper - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.mapper"); - writeRoute(classContentBean); - } - //写mapper.xml - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_XML_DDD.getTempFileName())){ - classContentBean.setChildPackageName("mapper"); - classContentBean.setClassSuffix(".xml"); - writeMapperXml(classContentBean); - } - - //写infrast.cache - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CACHE.getTempFileName())){ - classContentBean.setChildPackageName("infrast.cache"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写DO文件 - * @param classContentBean - */ - public void writeDO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写Mapper文件 - * @param classContentBean - */ - public void writeMapper(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写Mapper.xml文件 - * @param classContentBean - */ - public void writeMapperXml(ClassContentBean classContentBean) { - String filePath = getMapperFilePath(classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") + "/infrast/dao"; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateColaConfig.getModuleInfrastPath() + packagePath + "/" + fileName; - } - - - /** - * - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getMapperFilePath(String humpClassName, String classSuffix) { - String fileName = humpClassName + classSuffix; - return projectTemplateColaConfig.getModuleInfrastPath() + Constant.MAPPER + "/" + fileName; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/ColaAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/ColaAppService.java similarity index 70% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/ColaAppService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/ColaAppService.java index 29502a7..d0d6dcf 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/ColaAppService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/ColaAppService.java @@ -1,6 +1,7 @@ -package com.coderman.codemaker.app; +package com.tianhua.codemaker.app; -import com.coderman.codemaker.enums.ModuleEnum; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.enums.ModuleEnum; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -9,7 +10,7 @@ import javax.annotation.Resource; * Description: * date: 2021/6/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -47,23 +48,23 @@ public class ColaAppService implements AppService{ @Override public IWriteFileService getModelAppService(String moduleName) { - if(moduleName.equals(ModuleEnum.COLA_INFRAST.getModuleName())){ + if(ModuleEnum.COLA_INFRAST.getModuleName().endsWith(moduleName)){ return colaInfrastWriteService; - } else if (moduleName.equals(ModuleEnum.COLA_CLIENT.getModuleName())) { + } else if (ModuleEnum.COLA_CLIENT.getModuleName().endsWith(moduleName)) { return colaClientWriteService; } - else if(moduleName.equals(ModuleEnum.COLA_DOMAIN.getModuleName())){ + else if(ModuleEnum.COLA_DOMAIN.getModuleName().endsWith(moduleName)){ return colaDomainWriteService; - } else if (moduleName.equals(ModuleEnum.COLA_APP.getModuleName())) { + } else if (ModuleEnum.COLA_APP.getModuleName().endsWith(moduleName)) { return colaAppWriteService; } - else if (moduleName.equals(ModuleEnum.COLA_API_DOC.getModuleName())) { + else if (moduleName.equals(ModuleEnum.COLA_API_DOC.getModuleName()) || moduleName.equals(GlobalConstant.PARENT)) { return colaApiDocWriteService; } - else if (moduleName.equals(ModuleEnum.COLA_START.getModuleName())) { + else if (ModuleEnum.COLA_START.getModuleName().endsWith(moduleName)) { return colaStartWriteService; } - else if (moduleName.equals(ModuleEnum.COLA_FEIGN_API.getModuleName())) { + else if (ModuleEnum.COLA_FEIGN_API.getModuleName().endsWith(moduleName)) { return colaFeginApiWriteService; } return colaAdapterWriteService; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAdapterWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAdapterWriteServiceImpl.java new file mode 100644 index 0000000..9d6ebd1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAdapterWriteServiceImpl.java @@ -0,0 +1,48 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/6 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "colaAdapterWriteService") +public class ColaAdapterWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "adapter"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleAdapterPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaApiDocWriteServiceImpl.java similarity index 33% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaApiDocWriteServiceImpl.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaApiDocWriteServiceImpl.java index 802f8fb..c9b58f5 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaApiDocWriteServiceImpl.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaApiDocWriteServiceImpl.java @@ -1,9 +1,11 @@ -package com.coderman.codemaker.app.cola; +package com.tianhua.codemaker.app.cola; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -11,19 +13,32 @@ import org.springframework.stereotype.Component; * Description: * date: 2021/7/6 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @Component(value = "colaApiDocWriteService") public class ColaApiDocWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private AppServiceConfig appServiceConfig; + private ProjectTemplateColaConfig projectTemplateColaConfig; + @Override public void writeContent(WriteContentBean writeContentBean) { + writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); + + //写pom文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.PARENT_POM.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleParentPath()); + writePom(classContentBean); + } + + //写sql文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SQL.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleParentPath()); + writeSql(classContentBean); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAppWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAppWriteServiceImpl.java new file mode 100644 index 0000000..618e11d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaAppWriteServiceImpl.java @@ -0,0 +1,49 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/6 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "colaAppWriteService") +public class ColaAppWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "app"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleAppPath()); + + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaClientWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaClientWriteServiceImpl.java new file mode 100644 index 0000000..a8989c2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaClientWriteServiceImpl.java @@ -0,0 +1,44 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/6 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "colaClientWriteService") +public class ColaClientWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "client"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleClientPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaDomainWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaDomainWriteServiceImpl.java new file mode 100644 index 0000000..b90c3ec --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaDomainWriteServiceImpl.java @@ -0,0 +1,45 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/6 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "colaDomainWriteService") +public class ColaDomainWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "domain"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleDomainPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java new file mode 100644 index 0000000..2d8fcfb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaFeignApiWriteServiceImpl.java @@ -0,0 +1,43 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.utils.Constant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/11/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ + +@Component(value = "colaFeignApiWriteService") +public class ColaFeignApiWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "feignapi"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleFeignApiPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaInfrastWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaInfrastWriteServiceImpl.java new file mode 100644 index 0000000..e092f63 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaInfrastWriteServiceImpl.java @@ -0,0 +1,48 @@ +package com.tianhua.codemaker.app.cola; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/6 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "colaInfrastWriteService") +public class ColaInfrastWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateColaConfig projectTemplateColaConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "infrast"; + + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleInfrastPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaStartWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaStartWriteServiceImpl.java similarity index 42% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaStartWriteServiceImpl.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaStartWriteServiceImpl.java index aa24e2d..121a127 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/cola/ColaStartWriteServiceImpl.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/cola/ColaStartWriteServiceImpl.java @@ -1,25 +1,22 @@ -package com.coderman.codemaker.app.cola; +package com.tianhua.codemaker.app.cola; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateColaConfig; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateColaConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.utils.Constant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.File; -import java.io.IOException; - /** * Description: * date: 2021/7/6 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -29,15 +26,23 @@ public class ColaStartWriteServiceImpl extends WriteService implements IWriteFil private ProjectTemplateColaConfig projectTemplateColaConfig; @Autowired - private AppServiceConfig appServiceConfig; + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "start"; @Override public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateColaConfig.getModuleStartPath()); + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateColaConfig.getModuleStartPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); //写自定义工具类 if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ writeRoute(classContentBean); } + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } } } -- Gitee From 17616e32a48560d78187aa555a1d6f1e51b3462a Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:12:21 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrast/acl/DepartmentServiceAdapter.java | 27 ---- .../impl/DepartmentServiceAdapterImpl.java | 33 ----- .../acl/req/dto/DepartmentQueryDTO.java | 19 --- .../acl/res/dto/DepartmentResponseDTO.java | 19 --- .../DefaultCompDecorateServiceImpl.java | 18 +-- .../scan/DefaultCompScanServiceImpl.java | 19 +-- .../DerivedControllerElementHandler.java | 115 ------------------ .../app/dynamicddd/DerivedClassFactory.java | 27 +++- .../config/DefaultPackageConfig.java | 13 +- .../adapter/DefaultClazzWrapperImpl.java | 4 +- 10 files changed, 53 insertions(+), 241 deletions(-) delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/DepartmentServiceAdapter.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/impl/DepartmentServiceAdapterImpl.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/req/dto/DepartmentQueryDTO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/res/dto/DepartmentResponseDTO.java rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java (81%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/scan/DefaultCompScanServiceImpl.java (75%) delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/DerivedClassFactory.java (93%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/DefaultPackageConfig.java (79%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/adapter/DefaultClazzWrapperImpl.java (93%) diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/DepartmentServiceAdapter.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/DepartmentServiceAdapter.java deleted file mode 100644 index 88b9fd8..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/DepartmentServiceAdapter.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.lightsnail.snailapp.usercrm.infrast.acl; - -import com.lightsnail.snailapp.usercrm.infrast.acl.res.dto.DepartmentResponseDTO; -import java.util.List; -import com.lightsnail.snailapp.usercrm.infrast.acl.req.dto.DepartmentQueryDTO; - - -/** - * @Description:部门查询服务适配器接口 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -public interface DepartmentServiceAdapter{ - /** - * - * @Description:查询所有有效的部门 - * @return List - */ - List queryAllDepartment(DepartmentQueryDTO queryDto); - /** - * - * @Description:查询子部门 - * @return List - */ - List queryDepartmentsList(Long pId); -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/impl/DepartmentServiceAdapterImpl.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/impl/DepartmentServiceAdapterImpl.java deleted file mode 100644 index 5e7e426..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/impl/DepartmentServiceAdapterImpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.lightsnail.snailapp.usercrm.infrast.acl.impl; - -import com.lightsnail.snailapp.usercrm.infrast.acl.res.dto.DepartmentResponseDTO; -import java.util.List; -import com.lightsnail.snailapp.usercrm.infrast.acl.req.dto.DepartmentQueryDTO; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import com.lightsnail.snailapp.usercrm.infrast.acl.DepartmentServiceAdapter; - -/** - * @Description:部门查询服务适配器接口实现类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Service -public class DepartmentServiceAdapterImpl implements DepartmentServiceAdapter{ - - private Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Override - public List queryAllDepartment(DepartmentQueryDTO queryDto){ - return null; - } - - @Override - public List queryDepartmentsList(Long pId){ - return null; - } - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/req/dto/DepartmentQueryDTO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/req/dto/DepartmentQueryDTO.java deleted file mode 100644 index d3a6d6a..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/req/dto/DepartmentQueryDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.lightsnail.snailapp.usercrm.infrast.acl.req.dto; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class DepartmentQueryDTO { - - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/res/dto/DepartmentResponseDTO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/res/dto/DepartmentResponseDTO.java deleted file mode 100644 index f9ceac5..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/infrast/acl/res/dto/DepartmentResponseDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.lightsnail.snailapp.usercrm.infrast.acl.res.dto; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class DepartmentResponseDTO { - - - -} \ No newline at end of file diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java similarity index 81% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java index 6aacd34..e8093b5 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/DefaultCompDecorateServiceImpl.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.component.decorate; - -import com.coderman.codemaker.api.ICompDecorateService; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.constant.ArchConstant; -import com.coderman.codemaker.element.ElementDecorateHandler; -import com.coderman.codemaker.factory.SpringClassBeanFactory; +package com.tianhua.codemaker.component.decorate; + +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.constant.ArchConstant; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.factory.SpringClassBeanFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ import java.util.Map; * * date: 2021/11/23 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/DefaultCompScanServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/DefaultCompScanServiceImpl.java similarity index 75% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/DefaultCompScanServiceImpl.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/DefaultCompScanServiceImpl.java index 219aafb..64fc508 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/DefaultCompScanServiceImpl.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/DefaultCompScanServiceImpl.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.component.scan; - -import com.coderman.codemaker.api.ICompScanService; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.component.ComponentConfigBean; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.classloader.CompClassLoadService; -import com.coderman.codemaker.component.CompPropReadService; +package com.tianhua.codemaker.component.scan; + +import com.tianhua.codemaker.api.ICompScanService; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.classloader.CompClassLoadService; +import com.tianhua.codemaker.component.CompPropReadService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.Map; * Description:组件扫描注册服务类 * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -46,6 +46,7 @@ public class DefaultCompScanServiceImpl implements ICompScanService { } ComponentContextBean componentContextBean = compClassLoadService.loadComponent(componentConfigBean); componentContextBean.setComponentName(compName); + componentContextBean.setComponentConfigBean(componentConfigBean); componentContextBeanMap.put(compName,componentContextBean); } return componentContextBeanMap; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java deleted file mode 100644 index eb718f6..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.ControllerElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Description: - * date: 2021/7/8 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - * 处理派生类bo->dto - */ -@Component(value = "derivedControllerElementHandler") -public class DerivedControllerElementHandler implements DomainElementHandler { - - - @Autowired - private ImportPackageService importPackageService; - - @Autowired - private DerivedClassFactory derivedClassFactory; - - - - @Override - public ControllerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - if(plantUmlContextBean.getDerivedPlantUmlContextBean() == null){ - return null; - } - ControllerElementBean controllerElementBean = new ControllerElementBean(); - List classBeanList = new ArrayList<>(); - plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement())){ - importPackageService.setPackageName(v,"adapter.controller"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - v.setDerived(true); - - List methodBeanFilterList = v.getMethodBeanList().stream().filter(methodBean -> - methodBean.getMethodName().toLowerCase().contains(v.getClassName().toLowerCase()) - ).collect(Collectors.toList()); - //如果有多个facade则覆盖默认的方法列表 - if(CollectionUtils.isNotEmpty(methodBeanFilterList)){ - methodBeanFilterList.stream().forEach(methodBean -> methodBean.setMethodName(methodBean.getMethodName().split("\\.")[1])); - v.setMethodBeanList(methodBeanFilterList); - } - v.getMethodBeanList().forEach(methodBean -> { - methodBean.buildDoc(); - buildParamAnnotation(methodBean); - }); - classBeanList.add(v); - } - }); - - //controller派生出feign接口 - derivedClassFactory.deriveController2Feign(classBeanList,plantUmlContextBean); - - classBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); - controllerElementBean.setClassBeanList(classBeanList); - return controllerElementBean; - } - - /** - * 动态构建方法参数注解 - * 这里是处理controller的注解 - * @param methodBean - */ - private void buildParamAnnotation(MethodBean methodBean){ - if(methodBean.getParamArr() == null || methodBean.getParamArr().length == 0){ - return; - } - - String rwType = ReadWriteTypeEnum.getCodeByMethod(methodBean.getSimplMethodName()); - - if(rwType.equals(ReadWriteTypeEnum.WRITE.getCode())){ - String [] paramAnnotationArr = new String [methodBean.getParamArr().length]; - for (int i = 0;i boElementBeanList, PlantUmlContextBean plantUmlContextBean) { Map convertMap = classConvertFactory.getDOBOConvertInterfaceList(boElementBeanList); List doboConvertInterfaceList = (List) convertMap.get("doboConvertList"); + if(CollectionUtils.isEmpty(doboConvertInterfaceList)){ + return; + } Map BoConvertRelationMap = (Map) convertMap.get("doboConvertRelationMap"); //将派生类放到派生类上下文里面 @@ -135,6 +138,7 @@ public class DerivedClassFactory { interfaceBean.setAuthor(v.getAuthor()); interfaceBean.setContext(v.getContext()); interfaceBean.setDerived(v.isDerived()); + v.getDynamicImportPackageList().forEach(str -> interfaceBean.addDynamicImportClass(str)); plantUmlContextBean.getDerivedPlantUmlContextBean().addInterfaceBean(interfaceBean); } } else { @@ -204,6 +208,7 @@ public class DerivedClassFactory { classBean.setImplInterfaceBean(v.getImplInterfaceBean()); classBean.setAuthor(v.getAuthor()); classBean.setDerived(v.isDerived()); + classBean.setAnnotationTagList(v.getAnnotationTagList()); plantUmlContextBean.getDerivedPlantUmlContextBean().addClassBean(classBean); } } else { @@ -300,6 +305,20 @@ public class DerivedClassFactory { } + /** + * 处理gataway到gatawayimpl的派生 + * + * @param serviceElementBeanList + * @param plantUmlContextBean + */ + public List deriveService2ServiceImpl(List serviceElementBeanList, PlantUmlContextBean plantUmlContextBean) { + List gatawayImplList = classConvertFactory.geServiceImplList(serviceElementBeanList); + if (CollectionUtils.isNotEmpty(gatawayImplList)) { + gatawayImplList.forEach(classBean -> plantUmlContextBean.getClassBeanMap().put(classBean.getClassName(), classBean)); + } + return gatawayImplList; + } + /** * 处理infrast acl到infrastaclimpl的派生 * diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/DefaultPackageConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/DefaultPackageConfig.java similarity index 79% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/DefaultPackageConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/DefaultPackageConfig.java index 6e37197..aace556 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/DefaultPackageConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/DefaultPackageConfig.java @@ -1,7 +1,7 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; -import com.coderman.codemaker.service.adapter.PackgeConstants; -import com.coderman.codemaker.service.packageimport.PackageImportService; +import com.tianhua.codemaker.service.adapter.PackgeConstants; +import com.tianhua.codemaker.service.packageimport.PackageImportService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -12,7 +12,7 @@ import java.util.Map; * Description: * date: 2021/6/30 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -50,4 +50,9 @@ public class DefaultPackageConfig { } return ""; } + + public void addPackage(String className,String packageName){ + defaultPackageMap.put(className, packageName); + } + } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/DefaultClazzWrapperImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/DefaultClazzWrapperImpl.java similarity index 93% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/DefaultClazzWrapperImpl.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/DefaultClazzWrapperImpl.java index 4548890..3a11b3c 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/DefaultClazzWrapperImpl.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/DefaultClazzWrapperImpl.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.adapter; +package com.tianhua.codemaker.service.adapter; import org.springframework.stereotype.Service; @@ -9,7 +9,7 @@ import java.util.Map; * Description:codeMaker的默认实现 * date: 2021/10/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 该组件已过期,整体逻辑已通过组件化升级完成 -- Gitee From 755772668a74dc72d0269c3bdb5e85cfd5592f1b Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:13:37 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coderman/codemaker/app/AppService.java | 19 - .../codemaker/app/CommonWriteService.java | 98 -- .../codemaker/app/DubboAppService.java | 45 - .../codemaker/app/DynamicDDDAppService.java | 24 - .../codemaker/app/IWriteFileService.java | 21 - .../codemaker/app/SpringBootAppService.java | 37 - .../codemaker/app/SpringCloudAppService.java | 47 - .../coderman/codemaker/app/WriteService.java | 111 --- .../dubbo/DubboApiDocWriteServiceImpl.java | 29 - .../app/dubbo/DubboApiWriteServiceImpl.java | 102 --- .../dubbo/DubboCommonWriteServiceImpl.java | 138 --- .../app/dubbo/DubboCoreWriteServiceImpl.java | 328 ------- .../app/dynamicddd/ClassBeanFactory.java | 68 -- .../app/dynamicddd/ClassConvertFactory.java | 863 ------------------ .../app/dynamicddd/DomainElementHandler.java | 16 - .../DynamicDDDWriteServiceImpl.java | 114 --- .../app/dynamicddd/MethodBeanFactory.java | 78 -- .../handler/AppCmdElementHandler.java | 62 -- .../handler/AppExeElementHandler.java | 151 --- .../handler/AppListenerElementHandler.java | 47 - .../handler/CacheElementHandler.java | 57 -- .../handler/DomainBoElementHandler.java | 220 ----- .../handler/DomainFactoryElementHandler.java | 48 - .../handler/DomainGatawayElementHandler.java | 49 - .../handler/DynamicMapperElementHandler.java | 208 ----- .../DynamicMapperXmlElementHandler.java | 44 - .../handler/EventElementHandler.java | 47 - .../handler/InfrastAclElementHandler.java | 149 --- .../handler/MqConsumerElementHandler.java | 52 -- .../handler/MqHandlerElementHandler.java | 52 -- .../handler/MqProducerElementHandler.java | 53 -- .../handler/MsgBodyElementHandler.java | 47 - .../handler/RepositoryElementHandler.java | 47 - .../handler/ValueObjectElementHandler.java | 137 --- .../SpringBootApiDocWriteServiceImpl.java | 29 - .../SpringBootWriteServiceImpl.java | 769 ---------------- .../SCFeignApiDocWriteServiceImpl.java | 23 - .../SCFeignApiWriteServiceImpl.java | 116 --- .../SCFeignProviderWriteServiceImpl.java | 751 --------------- .../DerivedControllerElementHandler.java | 114 +++ .../DerivedDOBOConvertElementHandler.java | 20 +- .../DerivedDTO2DTOConvertElementHandler.java | 21 +- .../DerivedDTOBOConvertElementHandler.java | 23 +- .../DerivedDTOElementHandler.java | 24 +- .../DerivedEnumElementHandler.java | 16 +- .../DerivedFacadeElementHandler.java | 31 +- .../DerivedFacadeImplElementHandler.java | 33 +- .../DerivedFeignElementHandler.java | 27 +- .../DerivedGatawayImplElementHandler.java | 29 +- .../DerivedInfrastAclImplElementHandler.java | 24 +- .../DerivedRepositoryImplElementHandler.java | 28 +- .../DerivedServiceImplElementHandler.java | 68 ++ .../DerivedVOBOConvertElementHandler.java | 20 +- .../DerivedVOElementHandler.java | 22 +- 54 files changed, 347 insertions(+), 5449 deletions(-) delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/AppService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/CommonWriteService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DubboAppService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DynamicDDDAppService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/IWriteFileService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringBootAppService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringCloudAppService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/WriteService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassBeanFactory.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassConvertFactory.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DomainElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/MethodBeanFactory.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppExeElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/CacheElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/EventElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java (72%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java (69%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedDTOElementHandler.java (82%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedEnumElementHandler.java (77%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java (59%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java (66%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedGatawayImplElementHandler.java (65%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java (70%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java (66%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedServiceImplElementHandler.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java (80%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java (75%) diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/AppService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/AppService.java deleted file mode 100644 index 3e885bd..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/AppService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.coderman.codemaker.app; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public interface AppService { - /** - * 根据模块名获取 模块文件写服务 - * @param moduleName - * @return - */ - IWriteFileService getModelAppService(String moduleName); - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/CommonWriteService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/CommonWriteService.java deleted file mode 100644 index cd469ba..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/CommonWriteService.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/7/8 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class CommonWriteService { - - @Autowired - private AppServiceConfig appServiceConfig; - - /** - * 写工具类文件 - * @param content - * @param modulePath - */ - public void writeSpringApplicationContext(String content,String modulePath) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/utils"; - String fileName = "SpringApplicationContext.java"; - filePath = modulePath + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写工具类文件 - * @param content - * @param modulePath - */ - public void writeAppEventPublisher(String content, String modulePath) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/utils"; - String fileName = "AppEventPublisher.java"; - filePath = modulePath + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写工具类文件 - * - * @param content - */ - public void writeBaseEvent(String content, String modulePath) { - String packageName = appServiceConfig.getPackage()+".domain.event"; - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath; - String fileName = "BaseEvent.java"; - filePath = modulePath + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写BaseController文件 - * - * @param content - */ - public void writeBaseController(String content, String modulePath) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/controller"; - String fileName = "BaseController.java"; - filePath = modulePath + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DubboAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DubboAppService.java deleted file mode 100644 index ddf7128..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DubboAppService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.enums.ModuleEnum; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dubboAppService") -public class DubboAppService implements AppService{ - @Resource(name = "dubboCoreWriteFileService") - private IWriteFileService dubboCoreWriteFileService; - - @Resource(name = "dubboApiWriteFileService") - private IWriteFileService dubboApiWriteFileService; - - @Resource(name = "dubboCommonWriteFileService") - private IWriteFileService dubboCommonWriteFileService; - - - - @Resource(name = "dubboApiDocWriteFileService") - private IWriteFileService dubboApiDocWriteFileService; - - - @Override - public IWriteFileService getModelAppService(String moduleName) { - if(moduleName.equals(ModuleEnum.DUBBO_API.getModuleName())){ - return dubboApiWriteFileService; - } else if (moduleName.equals(ModuleEnum.DUBBO_COMMON.getModuleName())) { - return dubboCommonWriteFileService; - } - else if (moduleName.equals(ModuleEnum.DUBBO_API_DOC.getModuleName())) { - return dubboApiDocWriteFileService; - } - return dubboCoreWriteFileService; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DynamicDDDAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DynamicDDDAppService.java deleted file mode 100644 index 71d6d0b..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/DynamicDDDAppService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.coderman.codemaker.app; - -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dynamicDDDAppService") -public class DynamicDDDAppService implements AppService { - @Resource(name = "dynamicDDDWriteServiceImpl") - private IWriteFileService dynamicDDDWriteService; - - @Override - public IWriteFileService getModelAppService(String moduleName) { - return dynamicDDDWriteService; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/IWriteFileService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/IWriteFileService.java deleted file mode 100644 index 7fb3fa0..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/IWriteFileService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.bean.WriteContentBean; - -/** - * Description: - * date: 2021/6/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public interface IWriteFileService { - - /** - * 抽象写模块class文件 - * @param writeContentBean - */ - void writeContent(WriteContentBean writeContentBean); - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringBootAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringBootAppService.java deleted file mode 100644 index c1cb113..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringBootAppService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.enums.ModuleEnum; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "springBootAppService") -public class SpringBootAppService implements AppService{ - @Resource(name = "springBootWriteService") - private IWriteFileService springBootWriteService; - - - - @Resource(name = "springBootApiDocWriteService") - private IWriteFileService springBootApiDocWriteService; - - - @Override - public IWriteFileService getModelAppService(String moduleName) { - if (moduleName.equals(ModuleEnum.SPRING_BOOT_WEB.getModuleName())) { - return springBootWriteService; - } - else if (moduleName.equals(ModuleEnum.SPRINGBOOT_API_DOC.getModuleName())) { - return springBootApiDocWriteService; - } - return null; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringCloudAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringCloudAppService.java deleted file mode 100644 index 9afab14..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/SpringCloudAppService.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.enums.ModuleEnum; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "springCloudAppService") -public class SpringCloudAppService implements AppService{ - @Resource(name = "sCFeignApiWriteService") - private IWriteFileService sCFeignApiWriteService; - - - - @Resource(name = "sCFeignProviderWriteService") - private IWriteFileService sCFeignProviderWriteService; - - - @Resource(name = "sCFeignApiDocWriteService") - private IWriteFileService sCFeignApiDocWriteService; - - - @Override - public IWriteFileService getModelAppService(String moduleName) { - if (moduleName.equals(ModuleEnum.SC_FEIGN_API.getModuleName())) { - return sCFeignApiWriteService; - } - else if (moduleName.equals(ModuleEnum.SPRINGBOOT_API_DOC.getModuleName())) { - return sCFeignApiDocWriteService; - } - else if (moduleName.equals(ModuleEnum.SC_FEIGN_PROVIDER.getModuleName())) { - return sCFeignProviderWriteService; - } - return null; - } - - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/WriteService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/WriteService.java deleted file mode 100644 index 9497470..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/WriteService.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.coderman.codemaker.app; - -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.utils.Constant; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/7/8 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -@Slf4j -public abstract class WriteService { - @Autowired - private AppServiceConfig appServiceConfig; - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassFile(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * - * @param classContentBean - * @return - */ - private String getFilePath(ClassContentBean classContentBean) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + classContentBean.getChildPackageName(); - String fileName = classContentBean.getHumpClassName() + ".java"; - return classContentBean.getModulePath() + packagePath + "/" + fileName; - } - - - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassFileV2(ClassContentBean classContentBean) { - String filePath = getClassPackageFilePath(classContentBean); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - log.error("error",e); - } - } - - - /** - * - * @param classContentBean - * @return - */ - private String getClassPackageFilePath(ClassContentBean classContentBean) { - String packagePath = classContentBean.getClassPackageName().replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath; - String fileName = classContentBean.getHumpClassName() + ".java"; - return classContentBean.getModulePath() + packagePath + "/" + fileName; - } - - - /** - * 写路由 - * @param classContentBean - */ - protected void writeRoute(ClassContentBean classContentBean){ - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - /** - * 写 api doc 文件 - * - * @param content - * @param moduleName - */ - public void writeApiDoc(String content, String moduleName) { - String apiDocOutPath = appServiceConfig.getApiDocOutPath(); - String filePath = apiDocOutPath + "/" + moduleName+".md"; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java deleted file mode 100644 index 57b7f2c..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.coderman.codemaker.app.dubbo; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateDubboConfig; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/6/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - * - * 写api模块服务 - */ -@Component(value = "dubboApiDocWriteFileService") -public class DubboApiDocWriteServiceImpl extends WriteService implements IWriteFileService { - - @Override - public void writeContent(WriteContentBean writeContentBean) { - writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); - - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiWriteServiceImpl.java deleted file mode 100644 index 915f51e..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboApiWriteServiceImpl.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.coderman.codemaker.app.dubbo; - -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateDubboConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/6/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - * - * 写api模块服务 - */ -@Component(value = "dubboApiWriteFileService") -public class DubboApiWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateDubboConfig projectTemplateDubboConfig; - - @Autowired - private AppServiceConfig appServiceConfig; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDubboConfig.getModuleApiPath()); - - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO.getTempFileName())){ - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - writeDTO(classContentBean); - } - - //写api.dto-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - writeRoute(classContentBean); - } - //写facade - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACADE.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("facade") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Facade"); - classContentBean.setChildPackageName("api.facade"); - classContentBean.setClassSuffix("Facade.java"); - writeRoute(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateDubboConfig.getModuleApiPath() + packagePath + "/" + fileName; - } - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java deleted file mode 100644 index 91724cc..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.coderman.codemaker.app.dubbo; - -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateDubboConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/6/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - * 写持久层模块服务 - */ -@Component(value = "dubboCommonWriteFileService") -public class DubboCommonWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateDubboConfig projectTemplateDubboConfig; - - @Autowired - private AppServiceConfig appServiceConfig; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDubboConfig.getModuleCommonPath()); - - //写do class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DATA_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.dataobject"); - classContentBean.setClassSuffix("DO.java"); - writeDO(classContentBean); - } - //写mapper class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER.getTempFileName())){ - classContentBean.setChildPackageName("mapper"); - classContentBean.setClassSuffix("Mapper.java"); - writeMapper(classContentBean); - } - - //写mapper.xml - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_XML.getTempFileName())){ - classContentBean.setChildPackageName("mapper"); - classContentBean.setClassSuffix("Mapper.xml"); - writeMapperXml(classContentBean); - } - //写infrast.dao.mapper - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.mapper"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写DO文件 - * @param classContentBean - */ - public void writeDO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写Mapper文件 - * @param classContentBean - */ - public void writeMapper(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写Mapper.xml文件 - * @param classContentBean - */ - public void writeMapperXml(ClassContentBean classContentBean) { - String filePath = getMapperFilePath(classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateDubboConfig.getModuleCommonPath() + packagePath + "/" + fileName; - } - - - /** - * - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getMapperFilePath(String humpClassName, String classSuffix) { - String fileName = humpClassName + classSuffix; - return projectTemplateDubboConfig.getModuleCommonPath() + Constant.MAPPER + "/" + fileName; - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java deleted file mode 100644 index 31a2f77..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.coderman.codemaker.app.dubbo; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateDubboConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/6/21 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dubboCoreWriteFileService") -public class DubboCoreWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateDubboConfig projectTemplateDubboConfig; - - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private CommonWriteService commonWriteService; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDubboConfig.getModuleCorePath()); - - //写FacadeImpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACADE_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("facade.impl"); - classContentBean.setClassSuffix("FacadeImpl.java"); - writeRoute(classContentBean); - } - - //写model.bo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("model.bo"); - classContentBean.setClassSuffix("BO.java"); - writeClassFile(classContentBean); - } - //写domain.bo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ - classContentBean.setChildPackageName("domain.bo"); - writeRoute(classContentBean); - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //写service - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE.getTempFileName())){ - classContentBean.setChildPackageName("service"); - classContentBean.setClassSuffix("Service.java"); - writeClassFile(classContentBean); - } - - - //写serviceimpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("service.impl"); - classContentBean.setClassSuffix("ServiceImpl.java"); - writeClassFile(classContentBean); - } - - //写test - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.TEST.getTempFileName())){ - classContentBean.setChildPackageName("test"); - classContentBean.setClassSuffix("FacadeTest.java"); - writeClassTestFile(classContentBean); - } - - //写Application类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APPLICATION.getTempFileName())){ - classContentBean.setChildPackageName(""); - writeClassFile(classContentBean); - } - - //写Aop类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACADE_AOP.getTempFileName())){ - classContentBean.setChildPackageName("aop"); - writeClassFile(classContentBean); - } - - //写springapplication - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())){ - classContentBean.setChildPackageName("utils"); - writeClassFile(classContentBean); - } - - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - classContentBean.setChildPackageName("utils"); - writeClassFile(classContentBean); - } - - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - //写domain.valueobject - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("domain.valueobject"); - writeRoute(classContentBean); - } - //写domain.msgbody - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.msgbody"); - writeRoute(classContentBean); - } - - //写domain.event - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.event"); - writeRoute(classContentBean); - } - - //写domain.gataway - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway"); - writeRoute(classContentBean); - } - //写domain.repository - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.repository"); - writeRoute(classContentBean); - } - - //写domain.gataway.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("gataway.impl"); - writeRoute(classContentBean); - } - - - //写domain.repository.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("repositoryimpl"); - classContentBean.setClassPackageName(writeContentBean.getClassPackageName()+".repositoryimpl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.repositoryimpl"); - writeClassFileV2(classContentBean); - } - } - - - - //写infrast.acl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl"); - }else { - classContentBean.setChildPackageName("infrast.adapter"); - } - writeRoute(classContentBean); - } - //写infrast.acl.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl.impl"); - }else { - classContentBean.setChildPackageName("infrast.adapter.impl"); - } - writeRoute(classContentBean); - } - - //写acl.param - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //写app.cmd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ - classContentBean.setChildPackageName("app.command"); - writeRoute(classContentBean); - } - //写app.exe - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ - classContentBean.setChildPackageName("app.executor"); - classContentBean.setModulePath(projectTemplateDubboConfig.getModuleCorePath()); - writeRoute(classContentBean); - } - - //写domain.factory - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.factory"); - writeRoute(classContentBean); - } - //写app.listener - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_LISTENER.getTempFileName())){ - classContentBean.setChildPackageName("app.listener"); - - } - - //写infrast.cache - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CACHE.getTempFileName())){ - classContentBean.setChildPackageName("infrast.cache"); - writeRoute(classContentBean); - } - - //写infras.mq.consumer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_CONSUMER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.consumer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.consumer"); - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.handler - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_HANDLER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.handler"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.handler"); - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.producer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_PRODUCER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.producer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.producer"); - writeClassFileV2(classContentBean); - } - } - - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassFile(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateDubboConfig.getModuleCorePath() + packagePath + "/" + fileName; - } - - /** - * 写测试文件 - * @param childPackageName - * @param humpClassName - * @param classSuffix - * @return - */ - public String getTestFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - packagePath = Constant.TEST_JAVA + "/" + packagePath + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateDubboConfig.getModuleCorePath() + packagePath + "/" + fileName; - } - - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassTestFile(ClassContentBean classContentBean) { - String filePath = getTestFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassBeanFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassBeanFactory.java deleted file mode 100644 index 8618cca..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassBeanFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd; - -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import org.assertj.core.util.Lists; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * Description: - * date: 2021/11/1 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class ClassBeanFactory { - - /** - * 构建dtobean - * @param className - * @param classBean - * @param fieldBeanList - * @return - */ - public ClassBean buildDtoClassBean(String className, ClassBean classBean, List fieldBeanList){ - String dtoClassName = className; - if (!className.toLowerCase().endsWith("dto")) { - dtoClassName = className + "DTO"; - } - return classBean.derivedNewClassBean(dtoClassName,"api.dto",fieldBeanList); - } - - - /** - * - * @param className - * @param classBean - * @param fieldBeanList - * @return - */ - public ClassBean buildVOClassBean(String className, ClassBean classBean, List fieldBeanList){ - String dtoClassName = className; - if (!className.toLowerCase().endsWith("vo")) { - dtoClassName = className + "VO"; - } - return classBean.derivedNewClassBean(dtoClassName,"adapter.vo",fieldBeanList); - } - - public InterfaceBean buildInterfaceBean(ClassBean classBean){ - InterfaceBean interfaceBean = new InterfaceBean(); - int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainDerivedElementEnum.DTO.getElement()); - if (x >= 0) { - String className = classBean.getClassName().substring(0, x) + "Facade"; - interfaceBean.setClassName(className); - interfaceBean.setPlantUMLPackage("api.facade"); - interfaceBean.setClassDesc(classBean.getClassDesc()); - interfaceBean.setMethodBeanList(Lists.newArrayList()); - return interfaceBean; - } - return null; - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassConvertFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassConvertFactory.java deleted file mode 100644 index 3fe2ff0..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/ClassConvertFactory.java +++ /dev/null @@ -1,863 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd; - -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.VisibilityEnum; -import com.coderman.codemaker.utils.StringHelperUtils; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.assertj.core.util.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description:类转换构建工厂 - * date: 2021/10/18 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class ClassConvertFactory { - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private ClassBeanFactory classBeanFactory; - - @Autowired - private MethodBeanFactory methodBeanFactory; - - /** - * 处理派生类bo->dto - * - * @param domainBOClassList - * @return - */ - public List getDTOClassList(List domainBOClassList) { - List dtoClassList = new ArrayList<>(); - for (ClassBean classBean : domainBOClassList) { - List fieldBeanList = classBean.buildSimpleFieldList(); - String[] classNameArr = classBean.getExtendFieldBean().getDtoKeyList(); - for (String className : classNameArr) { - dtoClassList.add(classBeanFactory.buildDtoClassBean(className, classBean, fieldBeanList)); - } - } - return dtoClassList; - } - - /** - * 处理派生类bo->dto - * - * @param domainBOClassList - * @return - */ - public List getVOClassList(List domainBOClassList) { - List voClassList = new ArrayList<>(); - - for (ClassBean classBean : domainBOClassList) { - List fieldBeanList = classBean.buildSimpleFieldList(); - String[] classNameArr = classBean.getExtendFieldBean().getVoKeyList(); - if (classNameArr == null || classNameArr.length == 0) { - continue; - } - for (String className : classNameArr) { - voClassList.add(classBeanFactory.buildVOClassBean(className, classBean, fieldBeanList)); - } - } - - return voClassList; - } - - - /** - * 处理派生类dto->facade - * - * @param dtoClassList - * @return - */ - public List getFacadeInterfaceList(List dtoClassList) { - List facadeInterfaceList = new ArrayList<>(); - - for (ClassBean classBean : dtoClassList) { - InterfaceBean interfaceBean = classBeanFactory.buildInterfaceBean(classBean); - if (interfaceBean == null) { - continue; - } - facadeInterfaceList.add(interfaceBean); - - } - return facadeInterfaceList; - } - - /** - * 处理派生类dto-bo convert - * - * @param dtoClassList - * @return - */ - public List getDTOBOConvertInterfaceList(List dtoClassList) { - List facadeInterfaceList = new ArrayList<>(); - for (ClassBean classBean : dtoClassList) { - InterfaceBean interfaceBean = new InterfaceBean(); - int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainDerivedElementEnum.DTO.getElement()); - if (x >= 0) { - String className = classBean.getClassName().substring(0, x) + "Convert"; - interfaceBean.setClassName(className); - interfaceBean.setPlantUMLPackage("model.convert"); - interfaceBean.setClassDesc(classBean.getClassDesc()); - interfaceBean.setMethodBeanList(getDTOBOConvertMethodList(classBean)); - List importList = new ArrayList<>(); - importList.add(classBean.getPackageName() + "." + classBean.getClassName()); - interfaceBean.setImportClassList(importList); - facadeInterfaceList.add(interfaceBean); - } - } - return facadeInterfaceList; - } - - - /** - * 处理派生类dto-bo convert - * - * @param boElementBeanList - * @return - */ - public Map getDOBOConvertInterfaceList(List boElementBeanList) { - - Map convertMap = new HashMap<>(); - Map boConvertRelationMap = new HashMap<>(); - - List doboConvertInterfaceList = new ArrayList<>(); - for (ClassBean classBean : boElementBeanList) { - InterfaceBean interfaceBean = new InterfaceBean(); - int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainElementEnum.BO.getElement()); - if (x >= 0) { - String className = classBean.getClassName().substring(0, x) + "Converter"; - interfaceBean.setClassName(className); - interfaceBean.setPlantUMLPackage("data.convert"); - interfaceBean.setClassDesc(classBean.getClassDesc()); - interfaceBean.setMethodBeanList(getDOBOConvertMethodList(classBean)); - interfaceBean.setImportClassList(Lists.newArrayList()); - doboConvertInterfaceList.add(interfaceBean); - boConvertRelationMap.put(classBean.getClassName(), className); - } - } - convertMap.put("doboConvertList", doboConvertInterfaceList); - convertMap.put("doboConvertRelationMap", boConvertRelationMap); - return convertMap; - } - - /** - * 处理派生类dto-bo convert - * - * @param classBean - * @return - */ - public List getDOBOConvertMethodList(ClassBean classBean) { - Optional fieldBean = classBean.getFieldBeanList().stream().filter(v -> v.isTableKey()).findFirst(); - if (!fieldBean.isPresent()) { - return Lists.newArrayList(); - } - - String tableName = fieldBean.get().getFieldName().replace("String", "").replace("string", "").trim(); - if (StringUtils.isEmpty(tableName)) { - return Lists.newArrayList(); - } - String classDOName = StringHelperUtils.getClassDOName(tableName) + "DO"; - - - List methodBeanList = new ArrayList<>(); - MethodBean do2bo = new MethodBean(); - String boClassName = classBean.getClassName(); - String varClassName = classDOName.substring(0, 1).toLowerCase().concat(classDOName.substring(1)); - do2bo.setMethodName("do2bo(" + classDOName + " " + varClassName + ")"); - do2bo.setReturnClass(boClassName); - methodBeanList.add(do2bo); - - MethodBean dtoList2boList = new MethodBean(); - dtoList2boList.setMethodName("doList2boList(List<" + classDOName + "> " + varClassName + "List)"); - dtoList2boList.setReturnClass("List<" + boClassName + ">"); - methodBeanList.add(dtoList2boList); - - - MethodBean bo2to = new MethodBean(); - varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - bo2to.setMethodName("bo2do(" + boClassName + " " + varClassName + ")"); - bo2to.setReturnClass(classDOName); - methodBeanList.add(bo2to); - - MethodBean boList2dtoList = new MethodBean(); - boList2dtoList.setMethodName("boList2doList(List<" + boClassName + "> " + varClassName + "List)"); - boList2dtoList.setReturnClass("List<" + classDOName + ">"); - methodBeanList.add(boList2dtoList); - - methodBeanList.forEach(methodBean -> methodBean.buildParamArr()); - return methodBeanList; - } - - - /** - * 处理派生类dto-bo convert - * - * @param classBean - * @return - */ - public List getDTOBOConvertMethodList(ClassBean classBean) { - List methodBeanList = new ArrayList<>(); - MethodBean dto2bo = new MethodBean(); - String boClassName = classBean.getClassName().replace("DTO", "BO"); - String varClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - dto2bo.setMethodName("dto2bo(" + classBean.getClassName() + " " + varClassName + ")"); - dto2bo.setReturnClass(boClassName); - methodBeanList.add(dto2bo); - - MethodBean dtoList2boList = new MethodBean(); - dtoList2boList.setMethodName("dtoList2boList(List<" + classBean.getClassName() + "> " + varClassName + "List)"); - dtoList2boList.setReturnClass("List<" + boClassName + ">"); - methodBeanList.add(dtoList2boList); - - - MethodBean bo2to = new MethodBean(); - varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - bo2to.setMethodName("bo2dto(" + boClassName + " " + varClassName + ")"); - bo2to.setReturnClass(classBean.getClassName().replace("DTO", "BO")); - methodBeanList.add(bo2to); - - MethodBean boList2dtoList = new MethodBean(); - boList2dtoList.setMethodName("boList2dtoList(List<" + boClassName + "> " + varClassName + "List)"); - boList2dtoList.setReturnClass("List<" + classBean.getClassName() + ">"); - methodBeanList.add(boList2dtoList); - - return methodBeanList; - } - - - /** - * 处理派生类facade->facadeimpl - * - * @param facadeInterfaceList - * @return - */ - public List getFacadeImplList(List facadeInterfaceList) { - List facadeImplList = new ArrayList<>(); - - for (InterfaceBean interfaceBean : facadeInterfaceList) { - ClassBean classBean = new ClassBean(); - String className = interfaceBean.getClassName() + "Impl"; - classBean.setClassName(className); - classBean.setClassDesc(classBean.getClassDesc()); - classBean.setPlantUMLPackage("app.facadeimpl"); - List methodBeanList = new ArrayList<>(); - interfaceBean.getMethodBeanList().forEach(methodBean -> methodBeanList.add(methodBean.copySelf(""))); - List fieldBeanList = new ArrayList<>(interfaceBean.getFieldBeanList()); - classBean.setContext(interfaceBean.getContext()); - classBean.setMethodBeanList(methodBeanList); - classBean.setFieldBeanList(fieldBeanList); - classBean.setImportClassList(interfaceBean.getImportClassList()); - classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); - facadeImplList.add(classBean); - } - return facadeImplList; - } - - /** - * 处理派生类bo->facade - * - * @param domainBOClassList - * @return - */ - public List getFacadeClassList(List domainBOClassList) { - Map> facadeBOmap = new HashMap<>(); - domainBOClassList.forEach(classBean -> { - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isFacadeKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String facadeClassName = fieldBeanOptional.get().getFieldName().replace("String", "") - .replace("string", "").trim(); - List classBeanList = facadeBOmap.get(facadeClassName); - if (CollectionUtils.isEmpty(classBeanList)) { - classBeanList = Lists.newArrayList(); - } - classBeanList.add(classBean); - facadeBOmap.put(facadeClassName, classBeanList); - } - }); - - List interfaceBeanList = new ArrayList<>(); - facadeBOmap.forEach((k, v) -> { - InterfaceBean facadeInterfaceBean = new InterfaceBean(); - if (k.toLowerCase().endsWith("facade")) { - facadeInterfaceBean.setClassName(k); - } else { - facadeInterfaceBean.setClassName(k + "Facade"); - } - facadeInterfaceBean.setPlantUMLPackage("api.facade"); - - List facadeMethodList = new ArrayList<>(); - - v.stream().forEach(classBean -> { - List classMethodList = classBean.getMethodBeanList(); - if (CollectionUtils.isNotEmpty(classMethodList)) { - //通过特定字符过滤facade方法 - List newMethodList = classMethodList.stream().filter(methodBean -> - (methodBean.getReturnClass().toLowerCase().contains("dto") - || methodBean.getReturnClass().toLowerCase().contains("result") - || methodBean.getMethodName().toLowerCase().contains("facade") - || methodBean.getMethodName().toLowerCase().contains("dto")) - && !methodBean.isExportAclKey() - ).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(newMethodList)) { - facadeMethodList.addAll(newMethodList); - } - } - facadeInterfaceBean.setContext(classBean.getContext()); - }); - facadeMethodList.forEach(methodBean -> methodBean.buildParamArr()); - facadeInterfaceBean.setMethodBeanList(facadeMethodList); - facadeInterfaceBean.setFieldBeanList(new ArrayList<>()); - interfaceBeanList.add(facadeInterfaceBean); - }); - - return interfaceBeanList; - - } - - /** - * 处理派生类controller->feign - * - * @param controllerClassList - * @return - */ - public List getFeignClassList(List controllerClassList) { - List interfaceBeanList = new ArrayList<>(); - controllerClassList.forEach(classBean -> { - InterfaceBean feignInterfaceBean = new InterfaceBean(); - feignInterfaceBean.setContext(classBean.getContext()); - feignInterfaceBean.setClassName(classBean.getClassName().replace("Controller","") + "Feign"); - feignInterfaceBean.setPlantUMLPackage("api.feign"); - List feignMethodList = new ArrayList<>(); - - classBean.getMethodBeanList().stream().forEach(methodBean -> { - feignMethodList.add(methodBean.copySelf("")); - }); - feignMethodList.forEach(methodBean -> methodBean.buildParamArr()); - feignInterfaceBean.setMethodBeanList(feignMethodList); - feignInterfaceBean.setFieldBeanList(new ArrayList<>()); - interfaceBeanList.add(feignInterfaceBean); - }); - return interfaceBeanList; - } - - - /** - * 处理派生类bo->controller - * - * @param domainBOClassList - * @return - */ - public List getControllerClassList(List domainBOClassList) { - Map> controllermap = new HashMap<>(); - domainBOClassList.forEach(classBean -> { - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isControllerKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String controllerClassName = fieldBeanOptional.get().getFieldName().replace("String", "") - .replace("string", "").trim(); - List classBeanList = controllermap.get(controllerClassName); - if (CollectionUtils.isEmpty(classBeanList)) { - classBeanList = Lists.newArrayList(); - } - classBeanList.add(classBean); - controllermap.put(controllerClassName, classBeanList); - } - }); - - List controllerBeanList = new ArrayList<>(); - controllermap.forEach((k, v) -> { - ClassBean controllerBean = new ClassBean(); - if (k.toLowerCase().endsWith("controller")) { - controllerBean.setClassName(k); - } else { - controllerBean.setClassName(k + "Controller"); - } - controllerBean.setPlantUMLPackage("adapter.controller"); - List controllerMethodList = new ArrayList<>(); - - v.stream().forEach(classBean -> { - controllerBean.setContext(classBean.getContext()); - List classMethodList = classBean.getMethodBeanList(); - if (CollectionUtils.isNotEmpty(classMethodList)) { - //通过特定字符过滤facade方法 - List newMethodList = classMethodList.stream().filter(methodBean -> methodBean.getDesc().contains("/") - ).collect(Collectors.toList()); - - - if (CollectionUtils.isNotEmpty(newMethodList)) { - newMethodList.forEach(methodBean -> { - String pathValue = methodBean.getDesc().substring(methodBean.getDesc().indexOf("/")); - methodBean.setPathValue(pathValue); - methodBean.setDesc(methodBean.getDesc().replace(methodBean.getPathValue(), "")); - }); - - controllerMethodList.addAll(newMethodList); - } - } - }); - controllerMethodList.forEach(methodBean -> methodBean.buildParamArr()); - controllerBean.setMethodBeanList(controllerMethodList); - - controllerBeanList.add(controllerBean); - }); - - return controllerBeanList; - - } - - - /** - * 对bo类进行解析 - * - * @param domainBOList - * @return - */ - public Map getConvertInterfaceBeanList(List domainBOList) { - - Map> facadeBOmap = new HashMap<>(); - - Map convertMap = new HashMap<>(); - - domainBOList.forEach(classBean -> { - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isFacadeKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String facadeClassName = fieldBeanOptional.get().getFieldName().replace("String", "") - .replace("string", "").trim(); - if (facadeClassName.contains(",")) { - facadeClassName = classBean.getClassName().replace("BO", "").replace("Bo", "").replace("bo", "").trim(); - } - List classBeanList = facadeBOmap.get(facadeClassName); - if (CollectionUtils.isEmpty(classBeanList)) { - classBeanList = Lists.newArrayList(); - } - classBeanList.add(classBean); - facadeBOmap.put(facadeClassName, classBeanList); - } - }); - - List interfaceConvertBeanList = new ArrayList<>(); - - Map facadeConvertRelationMap = new HashMap<>(); - - facadeBOmap.forEach((k, v) -> { - InterfaceBean convertInterfaceBean = new InterfaceBean(); - String convertClassName = k.replace("Facade", "").replace("facade", "") + "Convert"; - convertInterfaceBean.setClassName(convertClassName); - convertInterfaceBean.setPlantUMLPackage("model.convert"); - convertInterfaceBean.setClassDesc(convertClassName); - facadeConvertRelationMap.put(k, convertClassName); - Set importClassSet = new HashSet<>(); - List classMethodList = new ArrayList<>(); - - v.stream().forEach(classBean -> { - - List methodBeanList = new ArrayList<>(); - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(f -> f.isDtoKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String dtoClassNameStr = fieldBeanOptional.get().getFieldName() - .replace("String", "") - .replace("string", "") - .trim(); - - - String[] arr = dtoClassNameStr.split(","); - for (String dtoClassName : arr) { - importClassSet.add(appServiceConfig.getPackage() + ".api.dto." + dtoClassName); - MethodBean dto2bo = new MethodBean(); - String vardtoName = dtoClassName.substring(0, 1).toLowerCase().concat(dtoClassName.substring(1)); - dto2bo.setMethodName("dto2bo(" + dtoClassName + " " + vardtoName + ")"); - dto2bo.setReturnClass(classBean.getClassName()); - methodBeanList.add(dto2bo); - - MethodBean dtoList2boList = new MethodBean(); - dtoList2boList.setMethodName(vardtoName + "s2boList(List<" + dtoClassName + "> " + vardtoName + "List)"); - dtoList2boList.setReturnClass("List<" + classBean.getClassName() + ">"); - methodBeanList.add(dtoList2boList); - - MethodBean bo2to = new MethodBean(); - String varBOClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - bo2to.setMethodName("bo2dto(" + classBean.getClassName() + " " + varBOClassName + ")"); - bo2to.setReturnClass(dtoClassName); - methodBeanList.add(bo2to); - - MethodBean boList2dtoList = new MethodBean(); - boList2dtoList.setMethodName(varBOClassName + "s2dtoList(List<" + classBean.getClassName() + "> " + varBOClassName + "List)"); - boList2dtoList.setReturnClass("List<" + dtoClassName + ">"); - methodBeanList.add(boList2dtoList); - } - classMethodList.addAll(methodBeanList); - } - }); - - convertInterfaceBean.setImportClassList(Lists.newArrayList(importClassSet)); - - Map map = new HashMap<>(); - classMethodList - .stream().filter(methodBean -> - !methodBean.getMethodName().toLowerCase().contains("response") && - !methodBean.getMethodName().toLowerCase().contains("responsedto") && - !methodBean.getReturnClass().toLowerCase().contains("request") && - !methodBean.getReturnClass().toLowerCase().contains("requestdto") || - methodBean.getReturnClass().toLowerCase().contains("requestbo") - ).collect(Collectors.toList()).forEach(methodBean -> map.putIfAbsent(methodBean.getReturnClass() + methodBean.getMethodName(), methodBean)); - convertInterfaceBean.setMethodBeanList(map.values().stream().collect(Collectors.toList())); - convertInterfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildParamArr()); - interfaceConvertBeanList.add(convertInterfaceBean); - }); - - - convertMap.put("interfaceList", interfaceConvertBeanList); - convertMap.put("facadeconvertrelation", facadeConvertRelationMap); - - return convertMap; - - } - - - /** - * 对bo类进行解析 - * - * @param domainBOList - * @return - */ - public Map getConvertBOVOInterfaceBeanList(List domainBOList) { - Map convertMap = new HashMap<>(); - Map boConvertRelationMap = new HashMap<>(); - - Map> contrllerBOmap = new HashMap<>(); - domainBOList.forEach(classBean -> { - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isControllerKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String controllerClassName = fieldBeanOptional.get().getFieldName().replace("String", "") - .replace("string", "").trim(); - if (controllerClassName.contains(",")) { - controllerClassName = classBean.getClassName().replace("BO", "").replace("Bo", "").replace("bo", "").trim(); - } - List classBeanList = contrllerBOmap.get(controllerClassName); - if (CollectionUtils.isEmpty(classBeanList)) { - classBeanList = Lists.newArrayList(); - } - classBeanList.add(classBean); - contrllerBOmap.put(controllerClassName, classBeanList); - } - }); - - List interfaceConvertBeanList = new ArrayList<>(); - contrllerBOmap.forEach((k, v) -> { - InterfaceBean convertInterfaceBean = new InterfaceBean(); - String convertClassName = k.replace("Controller", "").replace("controller", "") + "Convertervobo"; - convertInterfaceBean.setClassName(convertClassName); - convertInterfaceBean.setPlantUMLPackage("model.convert"); - convertInterfaceBean.setClassDesc(convertClassName); - Set importClassSet = new HashSet<>(); - List classMethodList = new ArrayList<>(); - - - v.stream().forEach(classBean -> { - - List methodBeanList = new ArrayList<>(); - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(f -> f.isVoKey()).findFirst(); - if (fieldBeanOptional.isPresent()) { - String voClassNameStr = fieldBeanOptional.get().getFieldName() - .replace("String", "") - .replace("string", "") - .trim(); - - String[] arr = voClassNameStr.split(","); - int i = 0; - for (String voClassName : arr) { - String varBOClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - - importClassSet.add(appServiceConfig.getPackage() + ".adapter.vo." + voClassName); - MethodBean dto2bo = new MethodBean(); - String varVoName = voClassName.substring(0, 1).toLowerCase().concat(voClassName.substring(1)); - dto2bo.setMethodName("vo2bo(" + voClassName + " " + varVoName + ")"); - dto2bo.setReturnClass(classBean.getClassName()); - methodBeanList.add(dto2bo); - - MethodBean dtoList2boList = new MethodBean(); - String tmpVar = varVoName.replace(varBOClassName.replace("BO", "").replace("Bo", ""), ""); - varVoName = tmpVar.substring(0, 1).toLowerCase().concat(tmpVar.substring(1)); - if (StringUtils.isEmpty(varVoName)) { - varVoName = "vo"; - } - String volist2bolist = methodBeanFactory.getvolist2boListMethod(i); - dtoList2boList.setMethodName(volist2bolist + "(List<" + voClassName + "> " + varVoName + "List)"); - dtoList2boList.setReturnClass("List<" + classBean.getClassName() + ">"); - methodBeanList.add(dtoList2boList); - - MethodBean bo2to = new MethodBean(); - tmpVar = voClassName.replace(classBean.getClassName().replace("BO", "").replace("Bo", ""), ""); - - bo2to.setMethodName("bo2" + tmpVar + "(" + classBean.getClassName() + " " + varBOClassName + ")"); - bo2to.setReturnClass(voClassName); - methodBeanList.add(bo2to); - - MethodBean boList2dtoList = new MethodBean(); - String bolist2volist = methodBeanFactory.getbolist2voListMethod(i); - - boList2dtoList.setMethodName(bolist2volist + "(List<" + classBean.getClassName() + "> " + varBOClassName + "List)"); - boList2dtoList.setReturnClass("List<" + voClassName + ">"); - methodBeanList.add(boList2dtoList); - i++; - } - classMethodList.addAll(methodBeanList); - } - boConvertRelationMap.put(classBean.getClassName(), convertInterfaceBean.getClassName()); - }); - - convertInterfaceBean.setImportClassList(Lists.newArrayList(importClassSet)); - - Map map = new HashMap<>(); - classMethodList - .stream().filter(methodBean -> - !methodBean.getMethodName().toLowerCase().contains("response") && - !methodBean.getMethodName().toLowerCase().contains("responsevo") && - !methodBean.getReturnClass().toLowerCase().contains("request") && - !methodBean.getReturnClass().toLowerCase().contains("requestvo") || - methodBean.getReturnClass().toLowerCase().contains("requestbo") - ).collect(Collectors.toList()).forEach(methodBean -> map.putIfAbsent(methodBean.getReturnClass() + methodBean.getMethodName(), methodBean)); - convertInterfaceBean.setMethodBeanList(map.values().stream().collect(Collectors.toList())); - convertInterfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildParamArr()); - interfaceConvertBeanList.add(convertInterfaceBean); - }); - convertMap.put("voboconvertlist", interfaceConvertBeanList); - convertMap.put("voboconvertrelation", boConvertRelationMap); - return convertMap; - } - - /** - * 构建方法内容 - * - * @param methodBeanList - * @return - */ - private List getMethodBeanList(List methodBeanList) { - for (MethodBean methodBean : methodBeanList) { - methodBean.buildMethodContent(); - } - return methodBeanList; - } - - /** - * 处理派生类gataway->gatawayimpl - * - * @param gatawayInterfaceList - * @return - */ - public List getGatawayImplList(List gatawayInterfaceList) { - List gatawayImplList = new ArrayList<>(); - - for (InterfaceBean interfaceBean : gatawayInterfaceList) { - ClassBean classBean = new ClassBean(); - String className = interfaceBean.getClassName() + "Impl"; - classBean.setClassName(className); - classBean.setClassDesc(classBean.getClassDesc()); - classBean.setPlantUMLPackage("infrast.gatawayimpl"); - classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); - if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { - classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); - classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); - } else { - classBean.setMethodBeanList(Lists.newArrayList()); - } - classBean.setImportClassList(interfaceBean.getImportClassList()); - classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); - gatawayImplList.add(classBean); - } - return gatawayImplList; - } - - /** - * 处理派生类infrastacl->infrastaclimpl - * - * @param InfrastAclInterfaceList - * @return - */ - public List getInfrastAclImplList(List InfrastAclInterfaceList) { - List infrastAclImplList = new ArrayList<>(); - - for (InterfaceBean interfaceBean : InfrastAclInterfaceList) { - ClassBean classBean = new ClassBean(); - String className = interfaceBean.getClassName() + "Impl"; - classBean.setClassName(className); - classBean.setClassDesc(classBean.getClassDesc()); - classBean.setPlantUMLPackage("infrast.acl.impl"); - classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); - if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { - classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); - classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); - } else { - classBean.setMethodBeanList(Lists.newArrayList()); - } - classBean.setImportClassList(interfaceBean.getImportClassList()); - classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); - infrastAclImplList.add(classBean); - } - return infrastAclImplList; - } - - /** - * 处理派生类repository->repositoryimpl - * - * @param repositoryInterfaceList - * @return - */ - public List getRepositoryImplList(List repositoryInterfaceList) { - List repositoryImplList = new ArrayList<>(); - - for (InterfaceBean interfaceBean : repositoryInterfaceList) { - ClassBean classBean = new ClassBean(); - String className = interfaceBean.getClassName() + "Impl"; - classBean.setClassName(className); - classBean.setClassDesc(classBean.getClassDesc()); - classBean.setPlantUMLPackage("infrast.repositoryimpl"); - if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { - classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); - classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); - } else { - classBean.setMethodBeanList(Lists.newArrayList()); - } - classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); - classBean.setImportClassList(interfaceBean.getImportClassList()); - classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); - repositoryImplList.add(classBean); - } - return repositoryImplList; - } - - /** - * 构建api的枚举数据 - * - * @param enumBeanList - * @return - */ - public List getApiEnumBeanList(List enumBeanList) { - List apiEnumBeanList = new ArrayList<>(); - enumBeanList.forEach(enumBean -> apiEnumBeanList.add(enumBean.copySelf())); - apiEnumBeanList.forEach(enumBean -> enumBean.setPackageName(appServiceConfig.getPackage() + ".api.enums")); - return apiEnumBeanList; - } - - - /** - * 处理派生类bo->dto - * - * @param domainBOClassList - * @return - */ - public List getQueryDTOClassList(List domainBOClassList) { - List dtoClassList = new ArrayList<>(); - for (ClassBean classBean : domainBOClassList) { - Optional optionalFieldBeanQueryDTOKey = classBean.getFieldBeanList().stream().filter(f -> f.isQueryDtoKey()).findFirst(); - if (!optionalFieldBeanQueryDTOKey.isPresent()) { - continue; - } - ClassBean queryDtoBean = optionalFieldBeanQueryDTOKey.get().buildQueryClass(); - queryDtoBean.setAuthor(classBean.getAuthor()); - queryDtoBean.setContext(classBean.getContext()); - queryDtoBean.setClassDesc("查询" + classBean.getClassDesc() + "请求DTO"); - dtoClassList.add(queryDtoBean); - } - return dtoClassList; - } - - - /** - * 处理派生类bo->dto - * - * @param domainBOClassList - * @return - */ - public List getQueryVOClassList(List domainBOClassList) { - List dtoClassList = new ArrayList<>(); - for (ClassBean classBean : domainBOClassList) { - Optional optionalFieldBeanQueryVOKey = classBean.getFieldBeanList().stream().filter(f -> f.isQueryVoKey()).findFirst(); - if (!optionalFieldBeanQueryVOKey.isPresent()) { - continue; - } - ClassBean queryDtoBean = optionalFieldBeanQueryVOKey.get().buildQueryClass(); - queryDtoBean.setAuthor(classBean.getAuthor()); - queryDtoBean.setClassDesc("查询" + classBean.getClassDesc() + "请求VO"); - queryDtoBean.setContext(classBean.getContext()); - dtoClassList.add(queryDtoBean); - } - return dtoClassList; - } - - - /** - * 处理派生类bo->导出到acl适配防腐下游参数 - * - * @param domainBOClassList - * @return - */ - public List getExportAclDTOClassList(List domainBOClassList) { - Map classBeanMap = new HashMap<>(); - - for (ClassBean classBean : domainBOClassList) { - Optional optionalMethodBeanQueryDTOKey = classBean.getMethodBeanList().stream().filter(f -> f.isExportAclKey()).findFirst(); - if (!optionalMethodBeanQueryDTOKey.isPresent()) { - continue; - } - //String DepartmentQueryDTO(roleList->list) - if(!optionalMethodBeanQueryDTOKey.get().getMethodName().contains("(")){ - continue; - } - - String [] classArr = optionalMethodBeanQueryDTOKey.get().getMethodName().trim().split("\\("); - - //对className打标防止被dto,vo handler扫描到当成bo->dto/vo的派生类处理, - //打标的类会被aclHandler专门扫描处理 - String className = classArr[0]+TemplateFileEnum.ACL.getTempFileName(); - ClassBean aclDtoclassBean = classBeanMap.get(className); - if(aclDtoclassBean == null){ - aclDtoclassBean = new ClassBean(); - aclDtoclassBean.setClassName(className); - aclDtoclassBean.setFieldBeanList(new ArrayList<>()); - } - - String fieldMappingStr = classArr[1].replace(")",""); - String [] fieldMappingArr = fieldMappingStr.split(","); - for(String fieldMapping : fieldMappingArr){ - String [] fieldArr; - if(fieldMapping.contains("->")){ - fieldArr = fieldMapping.split("->"); - }else { - fieldArr = fieldMapping.split("-"); - } - Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.getSimpleName().equals(fieldArr[0])).findFirst(); - if(fieldBeanOptional.isPresent()){ - FieldBean boFieldBean = fieldBeanOptional.get(); - String fieldType = boFieldBean.getFieldType(); - FieldBean fieldBean = new FieldBean(); - fieldBean.setFieldName(fieldType + " " + fieldArr[1]); - fieldBean.setDesc(boFieldBean.getDesc()); - fieldBean.setVisibility(VisibilityEnum.PRIVATE.getVisibility()); - fieldBean.buildFieldDetail(); - aclDtoclassBean.addField(fieldBean); - } - - } - classBeanMap.put(className,aclDtoclassBean); - } - - return Lists.newArrayList(classBeanMap.values()); - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DomainElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DomainElementHandler.java deleted file mode 100644 index 51e7f02..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DomainElementHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd; - -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public interface DomainElementHandler { - - T getElementBeanList(PlantUmlContextBean plantUmlContextBean); -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java deleted file mode 100644 index 5372faa..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd; - -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.ProjectTemplateDynamicDDDConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.app.IWriteFileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dynamicDDDWriteServiceImpl") -public class DynamicDDDWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateDynamicDDDConfig projectTemplateDynamicDDDConfig; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDynamicDDDConfig.getOutPath()); - - //写domain.bo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ - classContentBean.setChildPackageName("domain.bo"); - writeRoute(classContentBean); - } - - //写domain.valueobject - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("domain.valueobject"); - writeRoute(classContentBean); - } - - //写domain.msgbody - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.msgbody"); - writeRoute(classContentBean); - } - - //写domain.event - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.event"); - writeRoute(classContentBean); - } - - //写domain.gataway - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway"); - writeRoute(classContentBean); - } - //写domain.gataway.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway.impl"); - writeRoute(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - //写domain.factory - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.factory"); - writeRoute(classContentBean); - } - - //写infrast.acl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl"); - }else { - classContentBean.setChildPackageName("infrast.adapter"); - } - writeRoute(classContentBean); - } - - //写infrast.acl.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl.impl"); - }else { - classContentBean.setChildPackageName("infrast.adapter.impl"); - } - writeRoute(classContentBean); - } - - //写acl.param - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //写app.cmd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ - classContentBean.setChildPackageName("app.command"); - writeRoute(classContentBean); - } - - //写app.exe - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ - classContentBean.setChildPackageName("app.executor"); - writeRoute(classContentBean); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/MethodBeanFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/MethodBeanFactory.java deleted file mode 100644 index f3e1421..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/MethodBeanFactory.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd; - -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import org.assertj.core.util.Lists; -import org.springframework.stereotype.Service; - -import java.security.SecureRandom; -import java.util.List; - - -/** - * Description:动态方法工厂 - * date: 2021/11/1 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class MethodBeanFactory { - private List do2boList = Lists.newArrayList("do2bo", "DO2DO", "do2Bo", "Do2Bo"); - private List vos2bosList = Lists.newArrayList("VOs2BOs", "voList2boList", "volist2boList", "voList2BoList","vos2bos"); - - private List bos2vosList = Lists.newArrayList("BOs2VOs", "boList2voList", "bolist2voList", "boList2VoList","bos2vos"); - - - - private SecureRandom random = new SecureRandom(); - public MethodBean buildDO2BO(ClassBean classBean,String classDOName){ - MethodBean do2bo = new MethodBean(); - String boClassName = classBean.getClassName(); - String varClassName = classDOName.substring(0, 1).toLowerCase().concat(classDOName.substring(1)); - String randomMethodName = do2boList.get(Math.abs(random.nextInt(do2boList.size()))); - - do2bo.setMethodName(randomMethodName + "(" + classDOName + " " + varClassName + ")"); - do2bo.setReturnClass(boClassName); - return do2bo; - } - - public MethodBean buildBO2DO(ClassBean classBean,String boClassName,String classDOName){ - MethodBean bo2do = new MethodBean(); - String varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); - bo2do.setMethodName("bo2do(" + boClassName + " " + varClassName + ")"); - bo2do.setReturnClass(classDOName); - return bo2do; - } - - - public MethodBean buildDOList2BOList(String classDOName,String varClassName,String boClassName){ - MethodBean doList2boList = new MethodBean(); - doList2boList.setMethodName("doList2boList(List<" + classDOName + "> " + varClassName + "List)"); - doList2boList.setReturnClass("List<" + boClassName + ">"); - return doList2boList; - } - - public MethodBean buildBOList2DOList(String classDOName,String varClassName,String boClassName){ - MethodBean boList2doList = new MethodBean(); - boList2doList.setMethodName("boList2doList(List<" + boClassName + "> " + varClassName + "List)"); - boList2doList.setReturnClass("List<" + classDOName + ">"); - return boList2doList; - } - - - public String getvolist2boListMethod(int index){ - if(index >= vos2bosList.size()){ - return vos2bosList.get(vos2bosList.size()-1)+"V"+(index - vos2bosList.size()); - } - return vos2bosList.get(Math.abs(random.nextInt(vos2bosList.size()))); - } - - public String getbolist2voListMethod(int index){ - if(index >= bos2vosList.size()){ - return bos2vosList.get(bos2vosList.size()-1)+"V"+(index - bos2vosList.size()); - } - return bos2vosList.get(index); - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java deleted file mode 100644 index 2773ce6..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.CommandElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "appCmdElementHandler") -public class AppCmdElementHandler implements DomainElementHandler { - - - @Autowired - private ImportPackageService importPackageService; - - @Override - public CommandElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - CommandElementBean commandElementBean = new CommandElementBean(); - List cmdElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(classFilter(v.getClassName())){ - importPackageService.setPackageName(v,"app.command"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - cmdElementBeanList.add(v); - } - }); - cmdElementBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); - commandElementBean.setClassBeanList(cmdElementBeanList); - return commandElementBean; - } - - /** - * 类过滤 - * @param className - * @return - */ - private boolean classFilter(String className){ - String[] cmdArr = DomainElementEnum.COMMAND.getElement().split(","); - for (String cmd : cmdArr){ - if (className.toLowerCase().endsWith(cmd)) { - return true; - } - } - return false; - } -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppExeElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppExeElementHandler.java deleted file mode 100644 index 32e3259..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppExeElementHandler.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.ExecutorElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "appExeElementHandler") -public class AppExeElementHandler implements DomainElementHandler { - @Autowired - private ImportPackageService importPackageService; - - @Override - public ExecutorElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - ExecutorElementBean executorElementBean = new ExecutorElementBean(); - List interfaceBeanList = new ArrayList<>(); - List classBeanList = new ArrayList<>(); - - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(classFilter(v.getClassName())){ - importPackageService.setPackageName(v,"app.executor"); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - interfaceBeanList.add(v); - } - }); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(classFilter(v.getClassName())){ - importPackageService.setPackageName(v,"app.executor"); - addExeMethod(v,plantUmlContextBean); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - List methodBeanList = new ArrayList<>(); - v.getMethodBeanList().forEach(methodBean -> { - methodBean.buildDoc(); - methodBeanList.add(methodBean.copySelf(null)); - }); - v.setMethodBeanList(methodBeanList); - classBeanList.add(v); - } - }); - executorElementBean.setClassBeanList(classBeanList); - executorElementBean.setInterfaceBeanList(interfaceBeanList); - return executorElementBean; - } - - /** - * 类过滤 - * @param className - * @return - */ - private boolean classFilter(String className){ - String[] cmdArr = DomainElementEnum.EXECUTOR.getElement().split(","); - for (String cmd : cmdArr){ - if (className.toLowerCase().endsWith(cmd)) { - return true; - } - } - return false; - } - - /** - * 如果exe实现了抽象的exe接口,则对exe实现类进行检测 - * @param classBean - * @param plantUmlContextBean - */ - private void addExeMethod(ClassBean classBean, PlantUmlContextBean plantUmlContextBean){ - //如果没有实现类则直接返回 - if(StringUtils.isEmpty(classBean.getRelationClassStr())){ - return; - } - - if(classBean.getRelationClassStr().contains("implements")){ - String implClass = classBean.getRelationClassStr().replace("implements","").trim(); - InterfaceBean interfaceBean = plantUmlContextBean.getInterfaceBeanMap().get(implClass); - if(interfaceBean == null || CollectionUtils.isEmpty(interfaceBean.getMethodBeanList())){ - return; - } - - if(CollectionUtils.isEmpty(classBean.getMethodBeanList())){ - classBean.setMethodBeanList(interfaceBean.getMethodBeanList()); - return; - } - - dealMethod(classBean,interfaceBean.getMethodBeanList()); - - }else if(classBean.getRelationClassStr().contains("extends")){ - String extendsClass = classBean.getRelationClassStr().replace("extends","").trim(); - ClassBean superClassBean = plantUmlContextBean.getClassBeanMap().get(extendsClass); - if(superClassBean == null || CollectionUtils.isEmpty(superClassBean.getMethodBeanList())){ - return; - } - - if(CollectionUtils.isEmpty(classBean.getMethodBeanList())){ - classBean.setMethodBeanList(superClassBean.getMethodBeanList()); - return; - } - - dealMethod(classBean,superClassBean.getMethodBeanList()); - } - } - - /** - * 处理继承和实现的方法 - * @param classBean - * @param superMethodList - */ - private void dealMethod(ClassBean classBean, List superMethodList){ - List implMethodList = new ArrayList<>(); - for (MethodBean interfaceMethod : superMethodList){ - boolean implMethod = false; - for (MethodBean classMethod : classBean.getMethodBeanList()){ - if(classMethod.getMethodName().toLowerCase().trim().equals(interfaceMethod.getMethodName().toLowerCase().trim()) - && classMethod.getReturnClass().equals(interfaceMethod.getReturnClass())){ - implMethod = true; - } - } - if(!implMethod){ - implMethodList.add(interfaceMethod); - } - } - List methodBeanList = classBean.getMethodBeanList(); - methodBeanList.addAll(implMethodList); - classBean.setMethodBeanList(methodBeanList); - } - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java deleted file mode 100644 index 96c070e..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.AppListenerElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "appListenerElementHandler") -public class AppListenerElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public AppListenerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - AppListenerElementBean appListenerElementBean = new AppListenerElementBean(); - List appListenerElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.APP_LISTENER.getElement())){ - importPackageService.setPackageName(v,"app.listener"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - appListenerElementBeanList.add(v); - } - }); - appListenerElementBean.setClassBeanList(appListenerElementBeanList); - return appListenerElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/CacheElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/CacheElementHandler.java deleted file mode 100644 index 6405d7a..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/CacheElementHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.CacheElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.service.ImportPackageService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "cacheElementHandler") -public class CacheElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public CacheElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - CacheElementBean cacheElementBean = new CacheElementBean(); - List cacheBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.CACHE.getElement())){ - String moduleTag = "infrast"; - if(StringUtils.isEmpty(v.getPlantUMLPackage())){ - moduleTag = moduleTag+".cache"; - }else if(v.getPlantUMLPackage().contains(moduleTag)){ - moduleTag = ""; - } - importPackageService.setPackageNameWithModule(v,moduleTag); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - - cacheBeanList.add(v); - } - }); - cacheElementBean.setClassBeanList(cacheBeanList); - return cacheElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java deleted file mode 100644 index efdb56a..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.DomainBoElementBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.apache.commons.collections4.CollectionUtils; -import org.assertj.core.util.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "domainBoElementHandler") -public class DomainBoElementHandler implements DomainElementHandler { - - @Autowired - private DerivedClassFactory derivedClassFactory; - - @Autowired - private ImportPackageService importPackageService; - - @Override - public DomainBoElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - DomainBoElementBean domainBoElementBean = new DomainBoElementBean(); - List domainBoElementBeanList = new ArrayList<>(); - - List boWithTableKeyList = new ArrayList<>(); - List boWithDtoKeyList = new ArrayList<>(); - List boWithFacadeKeyList = new ArrayList<>(); - List boWithVoKeyList = new ArrayList<>(); - List boWithControllerKeyList = new ArrayList<>(); - List boWithQueryDTOKeyList = new ArrayList<>(); - List boWithQueryVOKeyList = new ArrayList<>(); - List boWithExportACLKeyList = new ArrayList<>(); - - - //过滤带有数据库表映射的bo - plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { - //过滤掉pagebo - if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !v.getClassName().equals("PageBO")) { - - Optional optionalFieldBeanContextKey = v.getFieldBeanList().stream().filter(f -> f.isContextKey()).findFirst(); - if (optionalFieldBeanContextKey.isPresent()) { - v.setContext(optionalFieldBeanContextKey.get().getSimpleName()); - } - - Optional optionalFieldBeanQueryDTOKey = v.getFieldBeanList().stream().filter(f -> f.isQueryDtoKey()).findFirst(); - if (optionalFieldBeanQueryDTOKey.isPresent()) { - boWithQueryDTOKeyList.add(v); - } - - Optional optionalFieldBeanQueryVOKey = v.getFieldBeanList().stream().filter(f -> f.isQueryVoKey()).findFirst(); - if (optionalFieldBeanQueryVOKey.isPresent()) { - boWithQueryVOKeyList.add(v); - } - - - importPackageService.setPackageName(v, "domain.bo"); - - Optional optionalFieldBeanTableKey = v.getFieldBeanList().stream().filter(f -> f.isTableKey()).findFirst(); - if (optionalFieldBeanTableKey.isPresent()) { - boWithTableKeyList.add(v); - //处理bo关联表的ID - FieldBean idFieldBean = new FieldBean("Long id","主键ID","id"); - List fieldBeanList = Lists.newArrayList(idFieldBean); - fieldBeanList.addAll(v.getFieldBeanList()); - v.setFieldBeanList(fieldBeanList); - setTableBean(v,plantUmlContextBean,optionalFieldBeanTableKey.get().getFieldName()); - v.getExtendFieldBean().buildTableKey(optionalFieldBeanTableKey.get().getFieldName()); - } - - Optional optionalFieldBeanDtoKey = v.getFieldBeanList().stream().filter(f -> f.isDtoKey()).findFirst(); - if (optionalFieldBeanDtoKey.isPresent()) { - boWithDtoKeyList.add(v); - v.getExtendFieldBean().buildDtoKeyArr(optionalFieldBeanDtoKey.get().getFieldName()); - } - - Optional optionalFieldBeanFacadeKey = v.getFieldBeanList().stream().filter(f -> f.isFacadeKey()).findFirst(); - if (optionalFieldBeanFacadeKey.isPresent()) { - boWithFacadeKeyList.add(v); - v.getExtendFieldBean().buildFacadeKeyArr(optionalFieldBeanFacadeKey.get().getFieldName()); - } - - Optional optionalFieldBeanVOKey = v.getFieldBeanList().stream().filter(f -> f.isVoKey()).findFirst(); - if (optionalFieldBeanVOKey.isPresent()) { - boWithVoKeyList.add(v); - v.getExtendFieldBean().buildVoKeyArr(optionalFieldBeanVOKey.get().getFieldName()); - } - - Optional optionalFieldBeanControllerKey = v.getFieldBeanList().stream().filter(f -> f.isControllerKey()).findFirst(); - if (optionalFieldBeanControllerKey.isPresent()) { - boWithControllerKeyList.add(v); - v.getExtendFieldBean().buildControllerKeyArr(optionalFieldBeanControllerKey.get().getFieldName()); - } - - Optional optionalFieldBeanInvokeFileKey= v.getFieldBeanList().stream().filter(f -> f.isInvokeFileKey()).findFirst(); - if (optionalFieldBeanInvokeFileKey.isPresent()) { - v.getExtendFieldBean().buildInvokeFileKeyArr(optionalFieldBeanInvokeFileKey.get().getFieldName()); - String invokeFileName = optionalFieldBeanInvokeFileKey.get().getFieldName().replace("String","").replace("string","").trim(); - plantUmlContextBean.addDynamicInvokeFile(invokeFileName); - } - - Optional optionalExportAclKey = v.getMethodBeanList().stream().filter(methodBean -> methodBean.isExportAclKey()).findFirst(); - if (optionalExportAclKey.isPresent()) { - boWithExportACLKeyList.add(v); - } - } - }); - //bo 派生 do-bo convert - derivedClassFactory.deriveDOBOConvert(boWithTableKeyList, plantUmlContextBean); - //默认的派生策略 - if(CollectionUtils.isEmpty(boWithDtoKeyList)){ - //bo 派生 dto - derivedClassFactory.deriveBo2DTO(domainBoElementBeanList, plantUmlContextBean); - }else { - //基于plantuml.bo的扩展信息进行派生 - derivedClassFactory.deriveBo2DTO(boWithDtoKeyList, plantUmlContextBean); - } - - //构建查询dto - if(CollectionUtils.isNotEmpty(boWithQueryDTOKeyList)){ - derivedClassFactory.deriveBo2Query(boWithQueryDTOKeyList, plantUmlContextBean, TemplateFileEnum.DTO.getTempFileName()); - } - - //构建查询vo - if(CollectionUtils.isNotEmpty(boWithQueryVOKeyList)){ - derivedClassFactory.deriveBo2Query(boWithQueryVOKeyList, plantUmlContextBean, TemplateFileEnum.VO.getTempFileName()); - } - - - //处理bo-vo的派生 - if(CollectionUtils.isNotEmpty(boWithVoKeyList)){ - //基于plantuml.bo的扩展信息进行派生 - derivedClassFactory.deriveBo2VO(boWithVoKeyList, plantUmlContextBean); - //通过vo 派生convert, - derivedClassFactory.deriveBoVO2Convert(boWithVoKeyList,plantUmlContextBean); - } - - //处理facade - if(CollectionUtils.isNotEmpty(boWithFacadeKeyList)){ - derivedClassFactory.deriveBo2Facade(boWithFacadeKeyList,plantUmlContextBean); - //通过facade 处理convert, - derivedClassFactory.deriveBoDTO2Convert(boWithFacadeKeyList,plantUmlContextBean); - } - - //处理controller - if(CollectionUtils.isNotEmpty(boWithControllerKeyList)){ - derivedClassFactory.deriveBo2Controller(boWithControllerKeyList,plantUmlContextBean); - } - - //构建需要导出的下游依赖接口参数 - if(CollectionUtils.isNotEmpty(boWithExportACLKeyList)){ - derivedClassFactory.deriveBo2AclDTO(boWithExportACLKeyList, plantUmlContextBean); - } - - - - - plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { - if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !v.getClassName().equals("PageBO")) { - //过滤扩展属性 - List beanList = v.getFieldBeanList().stream().filter(f -> f.isSimpleField()).collect(Collectors.toList()); - v.setFieldBeanList(beanList); - - //过滤扩展方法 - List methodBeanList = v.getMethodBeanList().stream().filter(methodBean -> - !methodBean.isModelExtendMethod() - ).collect(Collectors.toList()); - //对bo本身的方法返回值做refresh操作 - methodBeanList.stream().forEach(methodBean -> {methodBean.refreshReturnBodyByReturnType();}); - v.setMethodBeanList(methodBeanList); - - String className = v.getClassName().substring(0, 1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - domainBoElementBeanList.add(v); - - } - }); - - - domainBoElementBeanList.stream().forEach(v -> importPackageService.dealImportClass(v, plantUmlContextBean)); - domainBoElementBean.setClassBeanList(domainBoElementBeanList); - - return domainBoElementBean; - } - - - /** - * 根据table名称标示找到table对应的DO进而找到TableBean - * @param boClassBean - * @param plantUmlContextBean - * @param tableFieldName - */ - private void setTableBean(ClassBean boClassBean,PlantUmlContextBean plantUmlContextBean,String tableFieldName){ - String tableName = tableFieldName.toLowerCase().trim().replace("string","").replace(" ",""); - for (Map.Entry entry : plantUmlContextBean.getClassBeanMap().entrySet()){ - TableBean tableBean = entry.getValue().getTableBean(); - if(tableBean != null && tableBean.getTableName().equals(tableName)){ - boClassBean.setTableBean(tableBean); - } - } - - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java deleted file mode 100644 index 2b32fe2..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.FactoryElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "domainFactoryElementHandler") -public class DomainFactoryElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public FactoryElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - FactoryElementBean factoryElementBean = new FactoryElementBean(); - List domainBoElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.FACTORY.getElement())){ - importPackageService.setPackageName(v,"domain.factory"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - domainBoElementBeanList.add(v); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - } - }); - factoryElementBean.setClassBeanList(domainBoElementBeanList); - return factoryElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java deleted file mode 100644 index 44813ef..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.GatawayElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "domainGatawayElementHandler") -public class DomainGatawayElementHandler implements DomainElementHandler { - @Autowired - private ImportPackageService importPackageService; - - @Override - public GatawayElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - GatawayElementBean gatawayElementBean = new GatawayElementBean(); - List gatawInterfaceBeanList = new ArrayList<>(); - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.GATAWAY.getElement())){ - importPackageService.setPackageName(v,"domain.gataway"); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - gatawInterfaceBeanList.add(v); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - - } - }); - gatawayElementBean.setInterfaceBeanList(gatawInterfaceBeanList); - return gatawayElementBean; - } - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java deleted file mode 100644 index 9fc70ce..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.MapperMethodConstant; -import com.coderman.codemaker.bean.dddelement.DynamicMapperElementBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dynamicMapperElementHandler") -public class DynamicMapperElementHandler implements DomainElementHandler { - @Autowired - private ImportPackageService importPackageService; - - @Override - public DynamicMapperElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - DynamicMapperElementBean dynamicMapperElementBean = new DynamicMapperElementBean(); - List mapperInterfaceBeanList = new ArrayList<>(); - List classBeanList = new ArrayList<>(); - plantUmlContextBean.getInterfaceBeanMap().forEach((k, v) -> { - if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.DYNAMIC_MAPPER.getElement())) { - importPackageService.dealImportClass(v, plantUmlContextBean); - v.getMethodBeanList().forEach(methodBean -> { - methodBean.buildDoc(); - buildParamAnnotation(methodBean); - methodBean.setMethodName(methodBean.refreshMethodName()); - }); - mapperInterfaceBeanList.add(v); - //这里把mapperxml当作class将动态增加的方法当作field,构建xml sql循环渲染 - ClassBean mapperXmlBean = new ClassBean(); - mapperXmlBean.setClassName(v.getClassName()); - mapperXmlBean.setTableBean(v.getTableBean()); - mapperXmlBean.setColumnBeanList(v.getColumnBeanList()); - mapperXmlBean.setPackageName(v.getPackageName()); - mapperXmlBean.setImportClassList(v.getImportClassList()); - mapperXmlBean.setFieldBeanList(convertToFieldBeanList(v.getMethodBeanList(), mapperXmlBean)); - classBeanList.add(mapperXmlBean); - } - }); - dynamicMapperElementBean.setClassBeanList(classBeanList); - dynamicMapperElementBean.setInterfaceBeanList(mapperInterfaceBeanList); - return dynamicMapperElementBean; - } - - /** - * 获取plantuml动态调用时序图中的方法,不是内置的mapper方法 - * - * @param methodBeanList - * @return - */ - private List getInvokeSequenceMethod(List methodBeanList) { - Set defaultMethodSet = MapperMethodConstant.defaultMethodSet(); - return methodBeanList.stream().filter(methodBean -> !defaultMethodSet.contains(methodBean.getSimplMethodName())).collect(Collectors.toList()); - } - - - /** - * 这里将mapper方法映射成class的fieldBean,构建sql xml - * - * @param methodBeanList - * @param mapperXmlBean - * @return - */ - private List convertToFieldBeanList(List methodBeanList, ClassBean mapperXmlBean) { - List newMethodBeanList = getInvokeSequenceMethod(methodBeanList); - List fieldBeanList = new ArrayList<>(); - String tableName = mapperXmlBean.getTableBean().getTableName(); - Optional doTypePackage = mapperXmlBean.getImportClassList().stream().filter(str -> str.endsWith("DO")).findFirst(); - String parameterTypeStr = tableName; - if (doTypePackage.isPresent()) { - parameterTypeStr = doTypePackage.get(); - } - - - for (MethodBean methodBean : newMethodBeanList) { - //判断method是curd哪种 - FieldBean fieldBean = new FieldBean(); - String rwType = ReadWriteTypeEnum.getCodeByMethod(methodBean.getMethodName().trim()); - //读场景-->查询 - if (ReadWriteTypeEnum.READ.getCode().equals(rwType)) { - fieldBean.setFieldName(buildSelectSqlXml(methodBean.getSimplMethodName(), tableName)); - fieldBeanList.add(fieldBean); - continue; - } - if (ReadWriteTypeEnum.isInsert(methodBean.getMethodName())) { - fieldBean.setFieldName(buildInsertSqlXml(methodBean.getSimplMethodName(), tableName)); - fieldBeanList.add(fieldBean); - continue; - } - if (ReadWriteTypeEnum.isUpdate(methodBean.getMethodName())) { - fieldBean.setFieldName(buildUpdateSqlXml(methodBean.getSimplMethodName(), tableName, parameterTypeStr)); - fieldBeanList.add(fieldBean); - continue; - } - if (ReadWriteTypeEnum.isDelete(methodBean.getMethodName())) { - fieldBean.setFieldName(buildDeleteSqlXml(methodBean.getSimplMethodName(), tableName)); - fieldBeanList.add(fieldBean); - continue; - } - - } - return fieldBeanList; - } - - /** - * 构建查询sqlxml - * - * @param methodName - * @return - */ - private String buildSelectSqlXml(String methodName, String tableName) { - String sqlTemplate = " "; - return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); - } - - /** - * 构建更新sqlxml - * - * @param methodName - * @return - */ - private String buildUpdateSqlXml(String methodName, String tableName, String parameterTypeStr) { - String sqlTemplate = " \n" + - " update tableName\n" + - " set\n" + - " ${table.updateColumnNameList}\n" + - " where id = #{id}\n" + - " "; - return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName).replace("parameterTypeStr", parameterTypeStr); - } - - /** - * 构建删除sqlxml - * - * @param methodName - * @return - */ - private String buildDeleteSqlXml(String methodName, String tableName) { - String sqlTemplate = " \n" + - " delete from table.tableName where id = <#noparse>#{id<#noparse>}\n" + - " "; - return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); - } - - - /** - * 构建插入sqlxml - * - * @param methodName - * @return - */ - private String buildInsertSqlXml(String methodName, String tableName) { - String sqlTemplate = " \n" + - " insert into tableName(\n" + - " ${table.insertColumnNames}\n" + - " )\n" + - " values(\n" + - " ${table.insertColumnNameList}\n" + - " )\n" + - " "; - return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); - } - - /** - * 动态构建方法参数注解 - * 这里是处理controller的注解 - * - * @param methodBean - */ - private void buildParamAnnotation(MethodBean methodBean) { - if (methodBean.getParamArr() == null || methodBean.getParamArr().length == 0) { - return; - } - - String[] paramAnnotationArr = new String[methodBean.getParamArr().length]; - for (int i = 0; i < paramAnnotationArr.length; i++) { - String value = methodBean.getParamArr()[i]; - if (value.contains(" ")) { - value = value.split(" ")[1]; - } else { - value = value.substring(0, 1).toLowerCase() + value.substring(1); - } - paramAnnotationArr[i] = "@Param(value = \"" + value + "\")"; - } - methodBean.setParamAnnotationArr(paramAnnotationArr); - return; - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java deleted file mode 100644 index 7ee7d1e..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.DynamicMapperXmlElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "dynamicMapperXmlElementHandler") -public class DynamicMapperXmlElementHandler implements DomainElementHandler { - @Autowired - private ImportPackageService importPackageService; - - @Override - public DynamicMapperXmlElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - DynamicMapperXmlElementBean dynamicMapperElementBean = new DynamicMapperXmlElementBean(); - List mapperInterfaceBeanList = new ArrayList<>(); - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.DYNAMIC_MAPPER.getElement())){ - importPackageService.dealImportClass(v,plantUmlContextBean); - mapperInterfaceBeanList.add(v); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - } - }); - dynamicMapperElementBean.setInterfaceBeanList(mapperInterfaceBeanList); - return dynamicMapperElementBean; - } - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/EventElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/EventElementHandler.java deleted file mode 100644 index 251514c..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/EventElementHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.DomainEventElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/30 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "eventElementHandler") -public class EventElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - - @Override - public DomainEventElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - DomainEventElementBean domainEventElementBean = new DomainEventElementBean(); - List domainmsgBodyBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.EVENT.getElement())){ - importPackageService.setPackageName(v,"domain.event"); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - domainmsgBodyBeanList.add(v); - } - }); - domainEventElementBean.setClassBeanList(domainmsgBodyBeanList); - return domainEventElementBean; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java deleted file mode 100644 index b5ed0fe..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.InfrastAclElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.google.common.collect.Sets; -import org.apache.commons.lang3.StringUtils; -import org.assertj.core.util.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "infrastAclElementHandler") -public class InfrastAclElementHandler implements DomainElementHandler { - - - @Autowired - private ImportPackageService importPackageService; - - @Override - public InfrastAclElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - InfrastAclElementBean infrastAclElementBean = new InfrastAclElementBean(); - List interfaceBeanList = new ArrayList<>(); - - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.ACL.getElement())){ - importPackageService.setPackageName(v,"domain.acl"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - interfaceBeanList.add(v); - } - else if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.ADAPTER.getElement()) - || v.getClassName().toLowerCase().endsWith(DomainElementEnum.ADAPTER_SERVICE.getElement())){ - importPackageService.setPackageName(v,"domain.adapter"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - interfaceBeanList.add(v); - } - }); - - interfaceBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); - - List classBeanList = new ArrayList<>(); - interfaceBeanList.stream().forEach(interfaceBean -> { - List methodBeanList = interfaceBean.getMethodBeanList(); - for (MethodBean methodBean : methodBeanList){ - //对返回值进行检测 - if (methodBean.getReturnClass().toLowerCase().contains("dto")){ - String className = getClassName(methodBean.getReturnClass()); - String packageName = interfaceBean.getPackageName()+"."+"res.dto"; - - registAclClassBean(className,packageName,plantUmlContextBean); - ClassBean newClassBean = new ClassBean(); - newClassBean.setClassName(className); - newClassBean.setAuthor(interfaceBean.getAuthor()); - newClassBean.setPackageName(packageName); - newClassBean.setAuthor(interfaceBean.getAuthor()); - - interfaceBean.getImportClassList().add(packageName+"."+className); - classBeanList.add(newClassBean); - } - if(methodBean.getMethodName().contains("()")){ - continue; - } - String params = methodBean.getMethodName().substring(methodBean.getMethodName().indexOf("(")+1,methodBean.getMethodName().length() - 1); - if(StringUtils.isEmpty(params.trim())){ - continue; - } - String[] arr = params.split(","); - for (String param : arr){ - if(param.toLowerCase().contains("dto")){ - String className = param.trim().split(" ")[0]; - String packageName = interfaceBean.getPackageName()+"."+"req.dto"; - - registAclClassBean(className,packageName,plantUmlContextBean); - ClassBean newClassBean = new ClassBean(); - newClassBean.setClassName(className); - newClassBean.setFieldBeanList(new ArrayList<>()); - newClassBean.setMethodBeanList(new ArrayList<>()); - - newClassBean.setPackageName(packageName); - newClassBean.setAuthor(interfaceBean.getAuthor()); - interfaceBean.getImportClassList().add(packageName+"."+className); - classBeanList.add(newClassBean); - } - } - } - }); - - interfaceBeanList.stream().forEach(interfaceBean -> { - Set importSet = Sets.newHashSet(interfaceBean.getImportClassList()); - interfaceBean.setImportClassList(Lists.newArrayList(importSet)); - }); - - infrastAclElementBean.setInterfaceBeanList(interfaceBeanList); - infrastAclElementBean.setClassBeanList(classBeanList); - return infrastAclElementBean; - } - - - private String getClassName(String returnClassName){ - return returnClassName.trim().replace("<","") - .replace(">","") - .replace("List","") - .replace("Map","") - .replace("Set",""); - } - - /** - * 根据infrast.acl包中的接口方法参数和返回值获取导出的依赖classBean,注册到plantUML上下文中 - * @param className - * @param packageName - * @param plantUmlContextBean - * @return - */ - private void registAclClassBean(String className, String packageName, PlantUmlContextBean plantUmlContextBean){ - String newClassName = className + TemplateFileEnum.ACL.getTempFileName(); - ClassBean classBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(newClassName); - if(classBean == null){ - classBean = new ClassBean(); - classBean.setClassName(newClassName); - classBean.setMethodBeanList(new ArrayList<>()); - classBean.setFieldBeanList(new ArrayList<>()); - } - classBean.setPackageName(packageName); - plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().put(newClassName,classBean); - - - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java deleted file mode 100644 index 53e298d..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.MqConsumerElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "mqConsumerElementHandler") -public class MqConsumerElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public MqConsumerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - MqConsumerElementBean mqConsumerElementBean = new MqConsumerElementBean(); - List appListenerElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_CONSUMER.getElement())){ - String moduleTag = "infrast"; - if(StringUtils.isEmpty(v.getPlantUMLPackage())){ - moduleTag = moduleTag+".mq.consumer"; - } - importPackageService.setPackageNameWithModule(v,moduleTag); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - appListenerElementBeanList.add(v); - } - }); - mqConsumerElementBean.setClassBeanList(appListenerElementBeanList); - return mqConsumerElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java deleted file mode 100644 index 00ba651..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.MqHandlerElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "mqHandlerElementHandler") -public class MqHandlerElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public MqHandlerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - MqHandlerElementBean mqHandlerElementBean = new MqHandlerElementBean(); - List appListenerElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_HANDLER.getElement())){ - String moduleTag = "infrast"; - if(StringUtils.isEmpty(v.getPlantUMLPackage())){ - moduleTag = moduleTag+".mq.handler"; - } - importPackageService.setPackageNameWithModule(v,moduleTag); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - appListenerElementBeanList.add(v); - } - }); - mqHandlerElementBean.setClassBeanList(appListenerElementBeanList); - return mqHandlerElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java deleted file mode 100644 index f28aff5..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.MqProducerElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "mqProducerElementHandler") -public class MqProducerElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public MqProducerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - MqProducerElementBean mqProducerElementBean = new MqProducerElementBean(); - List appListenerElementBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_PRODUCER.getElement())){ - String moduleTag = "infrast"; - if(StringUtils.isEmpty(v.getPlantUMLPackage())){ - moduleTag = moduleTag+".mq.producer"; - } - importPackageService.setPackageNameWithModule(v,moduleTag); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - appListenerElementBeanList.add(v); - } - }); - mqProducerElementBean.setClassBeanList(appListenerElementBeanList); - return mqProducerElementBean; - } - -} - diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java deleted file mode 100644 index c14b201..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.DomainMsgBodyElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/30 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "msgBodyElementHandler") -public class MsgBodyElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - - @Override - public DomainMsgBodyElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - DomainMsgBodyElementBean domainMsgBodyElementBean = new DomainMsgBodyElementBean(); - List domainmsgBodyBeanList = new ArrayList<>(); - plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MSGBODY.getElement())){ - importPackageService.setPackageName(v,"domain.msgbody"); - - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - domainmsgBodyBeanList.add(v); - } - }); - domainMsgBodyElementBean.setClassBeanList(domainmsgBodyBeanList); - return domainMsgBodyElementBean; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java deleted file mode 100644 index 223a00d..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.RepositoryElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "repositoryElementHandler") -public class RepositoryElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - - @Override - public RepositoryElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - RepositoryElementBean repositoryElementBean = new RepositoryElementBean(); - List repositoryInterfaceBeanList = new ArrayList<>(); - plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ - if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.REPOSITORY.getElement())){ - importPackageService.setPackageName(v,"domain.repository"); - String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); - v.setClassName(className); - importPackageService.dealImportClass(v,plantUmlContextBean); - repositoryInterfaceBeanList.add(v); - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); - } - }); - repositoryElementBean.setInterfaceBeanList(repositoryInterfaceBeanList); - return repositoryElementBean; - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java deleted file mode 100644 index 9d8c4ba..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.coderman.codemaker.app.dynamicddd.handler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelement.ValueObjectElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.enums.VisibilityEnum; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * Description: - * date: 2021/6/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "valueObjectElementHandler") -public class ValueObjectElementHandler implements DomainElementHandler { - - @Autowired - private ImportPackageService importPackageService; - @Autowired - private DerivedClassFactory derivedClassFactory; - - @Override - public ValueObjectElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { - ValueObjectElementBean valueObjectElementBean = new ValueObjectElementBean(); - List domainBoElementBeanList = new ArrayList<>(); - List enumBeanList = new ArrayList<>(); - - plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { - if (classFilter(v.getClassName())) { - importPackageService.setPackageName(v,"domain.valuobject"); - domainBoElementBeanList.add(v); - } - }); - - - List enumWithToRpcClientKeyList = new ArrayList<>(); - - plantUmlContextBean.getEnumBeanMap().forEach((k, v) -> { - List enumValueList = new ArrayList<>(); - v.getEnumValueList().forEach(value -> { - if (value.endsWith(",")) { - enumValueList.add(value.substring(0,value.length() - 1)); - } else if (value.endsWith(";")) { - enumValueList.add(value.replace(";", "")); - } else { - enumValueList.add(value); - } - }); - - v.setEnumValueList(enumValueList); - //包名兼容处理 - if(v.getPlantUMLPackage().toLowerCase().endsWith("enum")){ - v.setPlantUMLPackage(v.getPlantUMLPackage()+"s"); - } - importPackageService.setPackageName(v,"domain.enums"); - - - Optional optionalFieldBean = v.getFieldBeanList().stream().filter(f -> f.isCopyToRpcClientKey()).findFirst(); - if (optionalFieldBean.isPresent()) { - enumWithToRpcClientKeyList.add(v); - } - - List fieldBeanList = v.getFieldBeanList().stream() - .filter(fieldBean -> !fieldBean.isCopyToRpcClientKey()) - .collect(Collectors.toList()); - v.setFieldBeanList(fieldBeanList); - dealConstruct(v); - - enumBeanList.add(v); - }); - - //将领域值对象-枚举类复制到rpc client端 - if(CollectionUtils.isNotEmpty(enumWithToRpcClientKeyList)){ - //基于plantuml.enum的扩展信息进行派生 - derivedClassFactory.deriveEnum2Enum(enumWithToRpcClientKeyList, plantUmlContextBean); - } - valueObjectElementBean.setEnumBeanList(enumBeanList); - valueObjectElementBean.setClassBeanList(domainBoElementBeanList); - return valueObjectElementBean; - } - - /** - * 处理枚举类中的构造方法 - * @param enumBean - */ - private void dealConstruct(EnumBean enumBean){ - List fieldBeanList = enumBean.getFieldBeanList(); - List paramList = new ArrayList<>(); - List constructMethodBodyList = new ArrayList<>(); - for (FieldBean fieldBean : fieldBeanList){ - String fieldName = fieldBean.getFieldName().replace(fieldBean.getVisibility(), ""); - fieldName.replace(VisibilityEnum.PRIVATE.getVisibility(),"") - .replace(VisibilityEnum.PROTECT.getVisibility(),"") - .replace(VisibilityEnum.PUBLIC.getVisibility(),"") - .replace(VisibilityEnum.PACKAGE_PRIVATE.getVisibility(),""); - paramList.add(fieldName); - String[] fieldValueArr = fieldName.trim().split(" "); - String realFieldName = fieldValueArr[fieldValueArr.length - 1]; - constructMethodBodyList.add("this."+realFieldName+" = "+realFieldName); - } - enumBean.setConstructParamStr(StringUtils.join(paramList,",")); - enumBean.setConstructMethodBodyList(constructMethodBodyList); - } - - - /** - * 类过滤 - * @param className - * @return - */ - private boolean classFilter(String className){ - String[] cmdArr = DomainElementEnum.VALUEOBJECT.getElement().split(","); - for (String cmd : cmdArr){ - if (className.toLowerCase().endsWith(cmd)) { - return true; - } - } - return false; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java deleted file mode 100644 index 7f463af..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.coderman.codemaker.app.springboot; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateSpringbootConfig; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "springBootApiDocWriteService") -public class SpringBootApiDocWriteServiceImpl extends WriteService implements IWriteFileService { - - @Override - public void writeContent(WriteContentBean writeContentBean) { - writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); - } - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootWriteServiceImpl.java deleted file mode 100644 index 0f89daa..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springboot/SpringBootWriteServiceImpl.java +++ /dev/null @@ -1,769 +0,0 @@ -package com.coderman.codemaker.app.springboot; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateSpringbootConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.Constant; -import com.coderman.codemaker.utils.FreemarkerUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Description: - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "springBootWriteService") -public class SpringBootWriteServiceImpl extends WriteService implements IWriteFileService { - - @Autowired - private ProjectTemplateSpringbootConfig projectTemplateConfig; - - - @Autowired - private AppServiceConfig appServiceConfig; - @Autowired - private DBErPictureService erPictureService; - - - @Autowired - private CommonWriteService commonWriteService; - - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateConfig.getOutPath()); - //写api.dto-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写api.dto - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO.getTempFileName())){ - classContentBean.setChildPackageName("dto"); - classContentBean.setClassSuffix("DTO.java"); - writeDTO(classContentBean); - } - - - //写entity class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENTITY.getTempFileName())){ - classContentBean.setChildPackageName("entity"); - classContentBean.setClassSuffix("Entity.java"); - writeClassFile(classContentBean); - } - - //写do class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DATA_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.dataobject"); - classContentBean.setClassSuffix("DO.java"); - // writeDO(classContentBean); - writeClassFile(classContentBean); - } - //写mapper class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER.getTempFileName())){ - classContentBean.setChildPackageName("dao.mapper"); - classContentBean.setClassSuffix("Mapper.java"); - writeClassFile(classContentBean); - } - - //写mapper.xml - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_XML.getTempFileName())){ - writeMapperXml(writeContentBean.getContent(), writeContentBean.getHumpClassName()); - } - - //写vo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO.getTempFileName())){ - classContentBean.setChildPackageName("vo"); - classContentBean.setClassSuffix("VO.java"); - writeClassFile(classContentBean); - } - - //写vo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.vo"); - classContentBean.setClassSuffix("VO.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写service - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE.getTempFileName())){ - classContentBean.setChildPackageName("service"); - classContentBean.setClassSuffix("Service.java"); - writeClassFile(classContentBean); - } - - //写serviceImpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("service.impl"); - classContentBean.setClassSuffix("ServiceImpl.java"); - writeClassFile(classContentBean); - } - - //写controller - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER.getTempFileName())){ - classContentBean.setChildPackageName("controller"); - classContentBean.setClassSuffix("Controller.java"); - writeClassFile(classContentBean); - } - - //写controller-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.controller"); - classContentBean.setClassSuffix("Controller.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写test - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.TEST.getTempFileName())){ - writeTest(writeContentBean.getContent(), writeContentBean.getHumpClassName()); - } - - /* //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())){ - commonWriteService.writeSpringApplicationContext(writeContentBean.getContent(),projectTemplateConfig.getOutPath()); - }*/ - - /* //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BASE_CONTROLLER.getTempFileName())){ - writeBaseController(writeContentBean.getContent()); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APPLICATION.getTempFileName())){ - writeApplication(writeContentBean.getContent()); - } - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeAppEventPublisher(writeContentBean.getContent(),projectTemplateConfig.getOutPath()); - } - - //写BaseEvent - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeBaseEvent(writeContentBean.getContent(),projectTemplateConfig.getOutPath()); - } -*/ - - //写model.bo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("bo"); - classContentBean.setClassSuffix("BO.java"); - writeClassFile(classContentBean); - } - //写domain.bo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ - classContentBean.setChildPackageName("domain.bo"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - writeClassFileV2(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.valueobject - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("domain.valueobject"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.event - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.event"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - - } - - - //写domain.msgbody - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.msgbody"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - - } - - //写domain.gataway - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.repository - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.repository"); - writeRoute(classContentBean); - } - - //写domain.gataway.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("gataway.impl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写domain.repository.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("repositoryimpl"); - classContentBean.setClassPackageName(writeContentBean.getClassPackageName()+".repositoryimpl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.repositoryimpl"); - writeClassFileV2(classContentBean); - } - } - - - //写infrast.acl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl"); - }else { - classContentBean.setChildPackageName("infrast.adapter"); - } - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写infrast.acl.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl.impl"); - }else { - classContentBean.setChildPackageName("infrast.adapter.impl"); - } - - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写acl.param - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //写app.cmd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ - classContentBean.setChildPackageName("app.command"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写app.exe - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ - classContentBean.setChildPackageName("app.executor"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.factory - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.factory"); - - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写app.listener - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_LISTENER.getTempFileName())){ - classContentBean.setChildPackageName("app.listener"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写infrast.cache - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CACHE.getTempFileName())){ - classContentBean.setChildPackageName("infrast.cache"); - writeRoute(classContentBean); - } - - - //写infras.mq.consumer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_CONSUMER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.consumer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.consumer"); - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.handler - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_HANDLER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.handler"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.handler"); - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.producer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_PRODUCER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.producer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.producer"); - writeClassFileV2(classContentBean); - } - } - - //写infrast.dao.mapper - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.mapper"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写mapper xml文件 - * - * @param content - * @param humpClassName - */ - public void writeMapperXml(String content, String humpClassName) { - String fileName = humpClassName + "Mapper.xml"; - String filePath = projectTemplateConfig.getOutPath() + Constant.MAPPER + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写entity文件 - * - * @param content - * @param humpClassName - */ - public void writeEntity(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/entity"; - String fileName = humpClassName + "Entity.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写entity文件 - * - * @param content - * @param humpClassName - */ - public void writeVO(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/vo"; - String fileName = humpClassName + "VO.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写mapper class文件 - * - * @param content - * @param humpClassName - */ - public void writeMapper(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/mapper"; - String fileName = humpClassName + "Mapper.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写service文件 - * - * @param content - * @param humpClassName - */ - public void writeService(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/service"; - String fileName = humpClassName + "Service.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写serviceImpl文件 - * - * @param content - * @param humpClassName - */ - public void writeServiceImpl(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/service/impl"; - String fileName = humpClassName + "ServiceImpl.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写BaseController文件 - * - * @param content - */ - public void writeBaseController(String content) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/controller"; - String fileName = "BaseController.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写测试文件 - * - * @param content - */ - public void writeTest(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.TEST_JAVA + "/" + packagePath + "/service/test"; - String fileName = humpClassName + "ServiceTest.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写应用启动类 - * - * @param content - */ - public void writeApplication(String content) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + ""; - String fileName = "Application.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写controller文件 - * - * @param content - * @param humpClassName - */ - public void writeController(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/controller"; - String fileName = humpClassName + "Controller.java"; - filePath = projectTemplateConfig.getOutPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 一次性生成单表需要的所有模块代码 - * - * @param humpClassName - * @param varMap - */ - public void writeAll(String humpClassName, Map varMap, String fast) { - String entityContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.ENTITY.getTempFileName(), varMap); - this.writeEntity(entityContent, humpClassName); - - String serviceContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SERVICE.getTempFileName(), varMap); - this.writeService(serviceContent, humpClassName); - - String serviceImplContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SERVICE_IMPL.getTempFileName(), varMap); - this.writeServiceImpl(serviceImplContent, humpClassName); - - String mapperXmlContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.MAPPER_XML.getTempFileName(), varMap); - this.writeMapperXml(mapperXmlContent, humpClassName); - - String mapperContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.MAPPER.getTempFileName(), varMap); - this.writeMapper(mapperContent, humpClassName); - - String controllerContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.CONTROLLER.getTempFileName(), varMap); - this.writeController(controllerContent, humpClassName); - - String voContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.VO.getTempFileName(), varMap); - this.writeVO(voContent, humpClassName); - - String testContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.TEST.getTempFileName(), varMap); - this.writeTest(testContent, humpClassName); - - - } - - /** - * 写公共基础服务类 - * - * @param varMap - */ - public void writeCommon(Map varMap, String fast) { - String baseControllerContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), varMap); - this.writeBaseController(baseControllerContent); - - String SpringApplicationContextContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), varMap); - commonWriteService.writeSpringApplicationContext(SpringApplicationContextContent,projectTemplateConfig.getOutPath()); - - String application = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.APPLICATION.getTempFileName(), varMap); - this.writeApplication(application); - - } - - /** - * 整合e-r图生成工具 - * - * @param tableBeanMap - * @param columnBeanListMap - */ - public void writeERPicture(Map tableBeanMap, Map> columnBeanListMap) { - String filePath = projectTemplateConfig.getOutPath() + Constant.ER_PICTURE + "/" + projectTemplateConfig.getDbName() + ".puml"; - List tableBeanList = new ArrayList<>(); - tableBeanMap.forEach((k, v) -> { - com.coderman.codemaker.dbergenerate.bean.TableBean tableBean = new com.coderman.codemaker.dbergenerate.bean.TableBean(); - tableBean.setTableComment(v.getTableComment()); - tableBean.setTableName(v.getTableName()); - List columnBeanList = columnBeanListMap.get(k); - List columnBeanList1 = new ArrayList<>(); - columnBeanList.forEach(columnBean -> { - com.coderman.codemaker.dbergenerate.bean.ColumnBean columnBean1 = new com.coderman.codemaker.dbergenerate.bean.ColumnBean(); - columnBean1.setColumnComment(columnBean.getColumnComment()); - columnBean1.setColumnKey(columnBean.getColumnKey()); - columnBean1.setColumnName(columnBean.getColumnName()); - columnBean1.setTableName(columnBean.getTableName()); - columnBean1.setColumnType(columnBean.getColumnType()); - columnBean1.setDataType(columnBean.getDataType()); - columnBeanList1.add(columnBean1); - }); - tableBean.setColumnBeanList(columnBeanList1); - tableBeanList.add(tableBean); - }); - erPictureService.getErPicture(filePath, tableBeanList); - } - - - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassFile(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateConfig.getOutPath() + packagePath + "/" + fileName; - } - - /** - * 写DO文件 - * @param classContentBean - */ - public void writeDO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java deleted file mode 100644 index babb26f..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.coderman.codemaker.app.springcloud; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.WriteContentBean; -import org.springframework.stereotype.Component; - -/** - * Description: - * date: 2021/11/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "sCFeignApiDocWriteService") -public class SCFeignApiDocWriteServiceImpl extends WriteService implements IWriteFileService { - - @Override - public void writeContent(WriteContentBean writeContentBean) { - writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java deleted file mode 100644 index 277c180..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.coderman.codemaker.app.springcloud; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateSpringCloudConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import com.coderman.codemaker.utils.Constant; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; - -/** - * Description: - * date: 2021/11/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ - -@Component(value = "sCFeignApiWriteService") -public class SCFeignApiWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private ProjectTemplateSpringCloudConfig projectTemplateSpringCloudConfig; - - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private DBErPictureService erPictureService; - - - @Autowired - private CommonWriteService commonWriteService; - - @Override - public void writeContent(WriteContentBean writeContentBean) { - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateSpringCloudConfig.getModuleFeginApiPath()); - //写api.dto-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("api.dto"); - classContentBean.setClassSuffix("DTO.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写api.dto - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DTO.getTempFileName())){ - classContentBean.setChildPackageName("dto"); - classContentBean.setClassSuffix("DTO.java"); - writeDTO(classContentBean); - } - - - //写feign - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FEIGN.getTempFileName())){ - classContentBean.setHumpClassName(writeContentBean.getHumpClassName().toLowerCase().endsWith("feign") ? writeContentBean.getHumpClassName() : writeContentBean.getHumpClassName()+"Feign"); - classContentBean.setChildPackageName("api.feign"); - classContentBean.setClassSuffix("Feign.java"); - writeRoute(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateSpringCloudConfig.getModuleFeginApiPath() + packagePath + "/" + fileName; - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java deleted file mode 100644 index c813d26..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java +++ /dev/null @@ -1,751 +0,0 @@ -package com.coderman.codemaker.app.springcloud; - -import com.coderman.codemaker.app.CommonWriteService; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.app.WriteService; -import com.coderman.codemaker.bean.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateSpringCloudConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import com.coderman.codemaker.utils.Constant; -import com.coderman.codemaker.utils.FreemarkerUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Description: - * date: 2021/11/29 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Component(value = "sCFeignProviderWriteService") -public class SCFeignProviderWriteServiceImpl extends WriteService implements IWriteFileService { - @Autowired - private ProjectTemplateSpringCloudConfig projectTemplateSpringCloudConfig; - - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private DBErPictureService erPictureService; - - - @Autowired - private CommonWriteService commonWriteService; - - - @Override - public void writeContent(WriteContentBean writeContentBean) { - - ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); - - //写entity class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENTITY.getTempFileName())){ - classContentBean.setChildPackageName("entity"); - classContentBean.setClassSuffix("Entity.java"); - writeClassFile(classContentBean); - } - - //写do class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.DATA_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.dataobject"); - classContentBean.setClassSuffix("DO.java"); - // writeDO(classContentBean); - writeClassFile(classContentBean); - } - //写mapper class - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER.getTempFileName())){ - classContentBean.setChildPackageName("dao.mapper"); - classContentBean.setClassSuffix("Mapper.java"); - writeClassFile(classContentBean); - } - - //写mapper.xml - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_XML.getTempFileName())){ - writeMapperXml(writeContentBean.getContent(), writeContentBean.getHumpClassName()); - } - - //写vo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO.getTempFileName())){ - classContentBean.setChildPackageName("vo"); - classContentBean.setClassSuffix("VO.java"); - writeClassFile(classContentBean); - } - - //写vo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VO_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.vo"); - classContentBean.setClassSuffix("VO.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写service - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE.getTempFileName())){ - classContentBean.setChildPackageName("service"); - classContentBean.setClassSuffix("Service.java"); - writeClassFile(classContentBean); - } - - //写serviceImpl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SERVICE_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("service.impl"); - classContentBean.setClassSuffix("ServiceImpl.java"); - writeClassFile(classContentBean); - } - - //写controller - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER.getTempFileName())){ - classContentBean.setChildPackageName("controller"); - classContentBean.setClassSuffix("Controller.java"); - writeClassFile(classContentBean); - } - - //写controller-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONTROLLER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("adapter.controller"); - classContentBean.setClassSuffix("Controller.java"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写test - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.TEST.getTempFileName())){ - writeTest(writeContentBean.getContent(), writeContentBean.getHumpClassName()); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName())){ - commonWriteService.writeSpringApplicationContext(writeContentBean.getContent(),projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BASE_CONTROLLER.getTempFileName())){ - writeBaseController(writeContentBean.getContent()); - } - - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APPLICATION.getTempFileName())){ - writeApplication(writeContentBean.getContent()); - } - //指定服务类 or 工具类 - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeAppEventPublisher(writeContentBean.getContent(),projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); - } - - //写BaseEvent - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName())){ - commonWriteService.writeBaseEvent(writeContentBean.getContent(),projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); - } - - - //写model.bo - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("bo"); - classContentBean.setClassSuffix("BO.java"); - writeClassFile(classContentBean); - } - //写domain.bo-ddd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ - classContentBean.setChildPackageName("domain.bo"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写convert - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CONVERT.getTempFileName())){ - writeClassFileV2(classContentBean); - } - //写domain.enum - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ - classContentBean.setChildPackageName("domain.enums"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.valueobject - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ - classContentBean.setChildPackageName("domain.valueobject"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.event - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.event"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - - } - - - //写domain.msgbody - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ - classContentBean.setChildPackageName("domain.msgbody"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - - } - - //写domain.gataway - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ - classContentBean.setChildPackageName("domain.gataway"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.repository - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.repository"); - writeRoute(classContentBean); - } - - //写domain.gataway.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("gataway.impl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写domain.repository.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.REPOSITORY_IMPL.getTempFileName())){ - classContentBean.setChildPackageName("repositoryimpl"); - classContentBean.setClassPackageName(writeContentBean.getClassPackageName()+".repositoryimpl"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.repositoryimpl"); - writeClassFileV2(classContentBean); - } - } - - - //写infrast.acl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl"); - }else { - classContentBean.setChildPackageName("infrast.adapter"); - } - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写infrast.acl.impl - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ - if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ - classContentBean.setChildPackageName("infrast.acl.impl"); - }else { - classContentBean.setChildPackageName("infrast.adapter.impl"); - } - - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写acl.param - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ - writeClassFileV2(classContentBean); - } - - //写app.cmd - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ - classContentBean.setChildPackageName("app.command"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - //写app.exe - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ - classContentBean.setChildPackageName("app.executor"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写domain.factory - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ - classContentBean.setChildPackageName("domain.factory"); - - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - - //写app.listener - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_LISTENER.getTempFileName())){ - classContentBean.setChildPackageName("app.listener"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写infrast.cache - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CACHE.getTempFileName())){ - classContentBean.setChildPackageName("infrast.cache"); - writeRoute(classContentBean); - } - - - //写infras.mq.consumer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_CONSUMER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.consumer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.consumer"); - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.handler - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_HANDLER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.handler"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.handler"); - //走文档里的package包生成方式 - writeClassFileV2(classContentBean); - } - } - - //写infras.mq.producer - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MQ_PRODUCER.getTempFileName())){ - classContentBean.setChildPackageName("infrast.mq.producer"); - //走默认的包生成方式 - if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ - writeClassFile(classContentBean); - }else { - //走文档里的package包生成方式 - classContentBean.setClassPackageName(appServiceConfig.getPackage()+".infrast.mq.producer"); - writeClassFileV2(classContentBean); - } - } - - //写infrast.dao.mapper - if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MAPPER_DDD.getTempFileName())){ - classContentBean.setChildPackageName("infrast.dao.mapper"); - writeRoute(classContentBean); - } - - //写自定义工具类 - if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ - writeRoute(classContentBean); - } - } - - /** - * 写mapper xml文件 - * - * @param content - * @param humpClassName - */ - public void writeMapperXml(String content, String humpClassName) { - String fileName = humpClassName + "Mapper.xml"; - String filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + Constant.MAPPER + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写entity文件 - * - * @param content - * @param humpClassName - */ - public void writeEntity(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/entity"; - String fileName = humpClassName + "Entity.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写entity文件 - * - * @param content - * @param humpClassName - */ - public void writeVO(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/vo"; - String fileName = humpClassName + "VO.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写mapper class文件 - * - * @param content - * @param humpClassName - */ - public void writeMapper(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/mapper"; - String fileName = humpClassName + "Mapper.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写service文件 - * - * @param content - * @param humpClassName - */ - public void writeService(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/service"; - String fileName = humpClassName + "Service.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写serviceImpl文件 - * - * @param content - * @param humpClassName - */ - public void writeServiceImpl(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/service/impl"; - String fileName = humpClassName + "ServiceImpl.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写BaseController文件 - * - * @param content - */ - public void writeBaseController(String content) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/controller"; - String fileName = "BaseController.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写测试文件 - * - * @param content - */ - public void writeTest(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.TEST_JAVA + "/" + packagePath + "/service/test"; - String fileName = humpClassName + "ServiceTest.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写应用启动类 - * - * @param content - */ - public void writeApplication(String content) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + ""; - String fileName = "Application.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - - /** - * 写controller文件 - * - * @param content - * @param humpClassName - */ - public void writeController(String content, String humpClassName) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/"); - String filePath = Constant.JAVA + "/" + packagePath + "/controller"; - String fileName = humpClassName + "Controller.java"; - filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; - try { - FileUtils.write(new File(filePath), content, "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 一次性生成单表需要的所有模块代码 - * - * @param humpClassName - * @param varMap - */ - public void writeAll(String humpClassName, Map varMap, String fast) { - String entityContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.ENTITY.getTempFileName(), varMap); - this.writeEntity(entityContent, humpClassName); - - String serviceContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SERVICE.getTempFileName(), varMap); - this.writeService(serviceContent, humpClassName); - - String serviceImplContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SERVICE_IMPL.getTempFileName(), varMap); - this.writeServiceImpl(serviceImplContent, humpClassName); - - String mapperXmlContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.MAPPER_XML.getTempFileName(), varMap); - this.writeMapperXml(mapperXmlContent, humpClassName); - - String mapperContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.MAPPER.getTempFileName(), varMap); - this.writeMapper(mapperContent, humpClassName); - - String controllerContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.CONTROLLER.getTempFileName(), varMap); - this.writeController(controllerContent, humpClassName); - - String voContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.VO.getTempFileName(), varMap); - this.writeVO(voContent, humpClassName); - - String testContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.TEST.getTempFileName(), varMap); - this.writeTest(testContent, humpClassName); - - - } - - /** - * 写公共基础服务类 - * - * @param varMap - */ - public void writeCommon(Map varMap, String fast) { - String baseControllerContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), varMap); - this.writeBaseController(baseControllerContent); - - String SpringApplicationContextContent = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), varMap); - commonWriteService.writeSpringApplicationContext(SpringApplicationContextContent,projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); - - String application = FreemarkerUtils.parseTpl(fast+ TemplateFileEnum.APPLICATION.getTempFileName(), varMap); - this.writeApplication(application); - - } - - /** - * 整合e-r图生成工具 - * - * @param tableBeanMap - * @param columnBeanListMap - */ - public void writeERPicture(Map tableBeanMap, Map> columnBeanListMap) { - String filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + Constant.ER_PICTURE + "/" + projectTemplateSpringCloudConfig.getDbName() + ".puml"; - List tableBeanList = new ArrayList<>(); - tableBeanMap.forEach((k, v) -> { - com.coderman.codemaker.dbergenerate.bean.TableBean tableBean = new com.coderman.codemaker.dbergenerate.bean.TableBean(); - tableBean.setTableComment(v.getTableComment()); - tableBean.setTableName(v.getTableName()); - List columnBeanList = columnBeanListMap.get(k); - List columnBeanList1 = new ArrayList<>(); - columnBeanList.forEach(columnBean -> { - com.coderman.codemaker.dbergenerate.bean.ColumnBean columnBean1 = new com.coderman.codemaker.dbergenerate.bean.ColumnBean(); - columnBean1.setColumnComment(columnBean.getColumnComment()); - columnBean1.setColumnKey(columnBean.getColumnKey()); - columnBean1.setColumnName(columnBean.getColumnName()); - columnBean1.setTableName(columnBean.getTableName()); - columnBean1.setColumnType(columnBean.getColumnType()); - columnBean1.setDataType(columnBean.getDataType()); - columnBeanList1.add(columnBean1); - }); - tableBean.setColumnBeanList(columnBeanList1); - tableBeanList.add(tableBean); - }); - erPictureService.getErPicture(filePath, tableBeanList); - } - - - /** - * 写class文件 - * @param classContentBean - */ - public void writeClassFile(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param childPackageName 最后一级子包名称 - * @param humpClassName 驼峰式类名 - * @param classSuffix 文件后缀 egg:DTO.java - * @return - */ - private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { - String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "/") ; - packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; - String fileName = humpClassName + classSuffix; - return projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + packagePath + "/" + fileName; - } - - /** - * 写DO文件 - * @param classContentBean - */ - public void writeDO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * 写dto文件 - * @param classContentBean - */ - public void writeDTO(ClassContentBean classContentBean) { - String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); - try { - FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java new file mode 100644 index 0000000..f51d628 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedControllerElementHandler.java @@ -0,0 +1,114 @@ +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.ControllerElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Description: + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * 处理派生类bo->dto + */ +@Component(value = "derivedControllerElementHandler") +public class DerivedControllerElementHandler implements DomainElementHandler { + + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Autowired + private DerivedClassFactory derivedClassFactory; + + + + @Override + public ControllerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + if(plantUmlContextBean.getDerivedPlantUmlContextBean() == null){ + return null; + } + ControllerElementBean controllerElementBean = new ControllerElementBean(); + List classBeanList = new ArrayList<>(); + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement())){ + importPackageService.setPackageName(v,"adapter.controller"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + v.setDerived(true); + + List methodBeanFilterList = v.getMethodBeanList().stream().filter(methodBean -> + methodBean.getMethodName().toLowerCase().contains(v.getClassName().toLowerCase()) + ).collect(Collectors.toList()); + //如果有多个facade则覆盖默认的方法列表 + if(CollectionUtils.isNotEmpty(methodBeanFilterList)){ + methodBeanFilterList.stream().forEach(methodBean -> methodBean.setMethodName(methodBean.getMethodName().split("\\.")[1])); + v.setMethodBeanList(methodBeanFilterList); + } + v.getMethodBeanList().forEach(methodBean -> { + if(methodBean.getMethodName().contains(".")){ + methodBean.setMethodName(methodBean.getMethodName().split("\\.")[1]); + } + methodBean.buildDoc(); + buildParamAnnotation(methodBean); + }); + classBeanList.add(v); + } + }); + + //controller派生出feign接口 + derivedClassFactory.deriveController2Feign(classBeanList,plantUmlContextBean); + + classBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); + controllerElementBean.setClassBeanList(classBeanList); + return controllerElementBean; + } + + /** + * 动态构建方法参数注解 + * 这里是处理controller的注解 + * @param methodBean + */ + private void buildParamAnnotation(MethodBean methodBean){ + if(methodBean.getParamArr() == null || methodBean.getParamArr().length == 0){ + return; + } + + String rwType = ReadWriteTypeEnum.getCodeByMethod(methodBean.getSimplMethodName()); + + if(rwType.equals(ReadWriteTypeEnum.WRITE.getCode())){ + for (int i = 0;i < methodBean.getParamArr().length;i ++){ + methodBean.addParamAnnotation("@RequestBody",i); + } + return; + } + if(rwType.equals(ReadWriteTypeEnum.READ.getCode())){ + for (int i = 0;i < methodBean.getParamArr().length;i ++){ + String value = methodBean.getParamArr()[i]; + if(value.contains(" ")){ + value = value.split(" ")[1]; + }else { + value = value.substring(0,1).toLowerCase() + value.substring(1); + } + methodBean.addParamAnnotation("@RequestParam(value = \""+value+"\", required = true)",i); + } + return; + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java index 428b8d4..400b400 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDOBOConvertElementHandler.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.DoBoConvertElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.DoBoConvertElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -16,7 +16,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类do-bo convert @@ -25,7 +25,7 @@ import java.util.List; public class DerivedDOBOConvertElementHandler implements DomainElementHandler { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public DoBoConvertElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java similarity index 72% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java index 958f914..b2e9bab 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTO2DTOConvertElementHandler.java @@ -1,12 +1,11 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.Dto2DtoConvertElementBean; -import com.coderman.codemaker.bean.dddelementderive.VoBoConvertElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import com.coderman.codemaker.service.ImportPackageService; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.Dto2DtoConvertElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,7 +16,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto @@ -26,7 +25,7 @@ import java.util.List; public class DerivedDTO2DTOConvertElementHandler implements DomainElementHandler { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public Dto2DtoConvertElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java similarity index 69% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java index b5c6132..9120239 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedDTOBOConvertElementHandler.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.DtoBoConvertElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.DtoBoConvertElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -16,7 +16,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto @@ -25,7 +25,7 @@ import java.util.List; public class DerivedDTOBOConvertElementHandler implements DomainElementHandler { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public DtoBoConvertElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { @@ -40,6 +40,9 @@ public class DerivedDTOBOConvertElementHandler implements DomainElementHandlerdto @@ -34,7 +34,7 @@ public class DerivedDTOElementHandler implements DomainElementHandlerrpc.client.enum @@ -25,7 +25,7 @@ import java.util.stream.Collectors; public class DerivedEnumElementHandler implements DomainElementHandler { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public EnumElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java index 436d452..6e2f037 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeElementHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.FacadeElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.FacadeElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -21,10 +21,10 @@ import java.util.stream.Collectors; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 - * 处理派生类bo->dto + * 处理派生类facade */ @Component(value = "derivedFacadeElementHandler") public class DerivedFacadeElementHandler implements DomainElementHandler { @@ -32,7 +32,7 @@ public class DerivedFacadeElementHandler implements DomainElementHandler methodBean.setMethodName(methodBean.getMethodName().split("\\.")[1])); v.setMethodBeanList(methodBeanFilterList); } - v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + v.getMethodBeanList().forEach(methodBean -> { + if(methodBean.getMethodName().contains(".")){ + methodBean.setMethodName(methodBean.getMethodName().split("\\.")[1]); + } + methodBean.buildDoc(); + }); importPackageService.dealImportClass(v,plantUmlContextBean); facadeElementBeanList.add(v); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java similarity index 59% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java index 57c2173..bceb39f 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFacadeImplElementHandler.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.FacadeImplElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.FacadeImplElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,40 +17,41 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto */ @Component(value = "derivedFacadeImplElementHandler") public class DerivedFacadeImplElementHandler implements DomainElementHandler { - @Autowired - private DerivedClassFactory derivedClassFactory; @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public FacadeImplElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { if(plantUmlContextBean.getDerivedPlantUmlContextBean() == null){ return null; } - FacadeImplElementBean FacadeImplElementBean = new FacadeImplElementBean(); + FacadeImplElementBean facadeImplElementBean = new FacadeImplElementBean(); List facadeImplElementBeanList = new ArrayList<>(); plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,v)->{ if(v.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE_IMPL.getElement())){ importPackageService.setPackageName(v,"app.facadeimpl"); String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); v.setClassName(className); + if(CollectionUtils.isNotEmpty(v.getMethodBeanList())){ + v.getMethodBeanList().stream().forEach(methodBean -> methodBean.refreshReturnBodyByReturnType()); + } facadeImplElementBeanList.add(v); } }); facadeImplElementBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); - FacadeImplElementBean.setClassBeanList(facadeImplElementBeanList); + facadeImplElementBean.setClassBeanList(facadeImplElementBeanList); - return FacadeImplElementBean; + return facadeImplElementBean; } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java similarity index 66% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java index fb55e1c..5be6f7e 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedFeignElementHandler.java @@ -1,28 +1,23 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.FacadeElementBean; -import com.coderman.codemaker.bean.dddelementderive.FeignElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import com.coderman.codemaker.service.ImportPackageService; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.FeignElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto @@ -33,7 +28,7 @@ public class DerivedFeignElementHandler implements DomainElementHandler methodBean.refreshReturnBodyByReturnType()); + } interfaceBeanList.add(v); } }); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java similarity index 70% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java index 5a79ff1..74606a4 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedInfrastAclImplElementHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.InfrastAclImplElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.InfrastAclImplElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理infrastaclImpl @@ -29,7 +29,7 @@ public class DerivedInfrastAclImplElementHandler implements DomainElementHandler private DerivedClassFactory derivedClassFactory; @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public InfrastAclImplElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java similarity index 66% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java index d4a0079..51082ce 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedRepositoryImplElementHandler.java @@ -1,13 +1,14 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; - -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.RepositoryImplElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainElementEnum; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.RepositoryImplElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -18,7 +19,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理repositoryimpl @@ -29,7 +30,7 @@ public class DerivedRepositoryImplElementHandler implements DomainElementHandler private DerivedClassFactory derivedClassFactory; @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public RepositoryImplElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { @@ -43,6 +44,9 @@ public class DerivedRepositoryImplElementHandler implements DomainElementHandler importPackageService.setPackageName(v,"app.facadeimpl"); String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); v.setClassName(className); + if(CollectionUtils.isNotEmpty(v.getMethodBeanList())){ + v.getMethodBeanList().stream().forEach(methodBean -> methodBean.refreshReturnBodyByReturnType()); + } repositoryElementBeanList.add(v); } }); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedServiceImplElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedServiceImplElementHandler.java new file mode 100644 index 0000000..d2e9aaa --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedServiceImplElementHandler.java @@ -0,0 +1,68 @@ +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.bean.dddelementderive.FacadeImplElementBean; +import com.tianhua.codemaker.bean.dddelementderive.ServiceImplElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * 处理serviceimpl + */ +@Component(value = "derivedServiceImplElementHandler") +public class DerivedServiceImplElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + @Autowired + private DerivedClassFactory derivedClassFactory; + + @Override + public ServiceImplElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + if(plantUmlContextBean.getDerivedPlantUmlContextBean() == null){ + return null; + } + ServiceImplElementBean serviceImplElementBean = new ServiceImplElementBean(); + List serviceList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.SERVICE.getElement())){ + importPackageService.setPackageName(v,"infrast.serviceimpl"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + if(CollectionUtils.isNotEmpty(v.getMethodBeanList())){ + v.getMethodBeanList().stream().forEach(methodBean -> methodBean.refreshReturnBodyByReturnType()); + } + serviceList.add(v); + } + }); + + serviceList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); + + + List serviceImplElementBeanList = derivedClassFactory.deriveService2ServiceImpl(serviceList,plantUmlContextBean); + + serviceImplElementBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); + + serviceImplElementBean.setClassBeanList(serviceImplElementBeanList); + + return serviceImplElementBean; + + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java similarity index 80% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java index ba0cb30..cca15f3 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOBOConvertElementHandler.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.VoBoConvertElementBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.VoBoConvertElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ import java.util.List; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto @@ -26,7 +26,7 @@ import java.util.List; public class DerivedVOBOConvertElementHandler implements DomainElementHandler { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Override public VoBoConvertElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java index b9636e3..7aff703 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/derivedhandler/DerivedVOElementHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.app.dynamicddd.derivedhandler; +package com.tianhua.codemaker.app.dynamicddd.derivedhandler; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.app.dynamicddd.DerivedClassFactory; -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.dddelementderive.VoElementBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.FieldBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelementderive.VoElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ import java.util.stream.Collectors; * Description: * date: 2021/7/8 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 处理派生类bo->dto @@ -30,7 +30,7 @@ public class DerivedVOElementHandler implements DomainElementHandler Date: Sat, 2 Apr 2022 22:14:46 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codemaker/annotations/ElementTag.java | 33 + .../codemaker/api/DomainElementHandler.java | 16 + .../codemaker/api/ICompDecorateService.java | 23 + .../codemaker/api/ICompRegistService.java | 25 + .../codemaker/api/ICompScanService.java | 24 + .../codemaker/api/IJavsAdapterSerivce.java | 27 + .../codemaker/api/IValidateService.java | 22 + .../codemaker/bean/ClassContentBean.java | 95 +++ .../tianhua/codemaker/bean/ColumnBean.java | 203 +++++ .../codemaker/bean/GeneratorSettingBean.java | 66 ++ .../codemaker/bean/GlobalConstant.java | 305 +++++++ .../codemaker/bean/MapperMethodConstant.java | 30 + .../com/tianhua/codemaker/bean/TableBean.java | 245 ++++++ .../codemaker/bean/WriteContentBean.java | 120 +++ .../codemaker/bean/apidoc/ApiDocBean.java | 112 +++ .../codemaker/bean/apidoc/ApiModuleBean.java | 12 + .../codemaker/bean/apidoc/ApiParamBean.java | 63 ++ .../bean/component/ComponentConfigBean.java | 216 +++++ .../bean/component/ComponentContextBean.java | 179 +++++ .../bean/config/AnnotationTagBean.java | 51 ++ .../codemaker/bean/config/ConfigFileBean.java | 84 ++ .../codemaker/bean/config/FtlBean.java | 72 ++ .../codemaker/bean/config/GAVBean.java | 36 + .../codemaker/bean/config/PomBean.java | 167 ++++ .../codemaker/bean/config/ProjectBean.java | 38 + .../bean/dddelement/AclElementBean.java | 12 + .../bean/dddelement/AggregateElementBean.java | 13 + .../dddelement/AppListenerElementBean.java | 13 + .../bean/dddelement/CacheElementBean.java | 13 + .../bean/dddelement/CommandElementBean.java | 12 + .../bean/dddelement/DomainBoElementBean.java | 13 + .../dddelement/DomainEventElementBean.java | 12 + .../dddelement/DomainMsgBodyElementBean.java | 12 + .../dddelement/DynamicMapperElementBean.java | 14 + .../DynamicMapperXmlElementBean.java | 14 + .../bean/dddelement/ElementBean.java | 194 +++++ .../bean/dddelement/ExecutorElementBean.java | 12 + .../bean/dddelement/FactoryElementBean.java | 13 + .../bean/dddelement/GatawayElementBean.java | 14 + .../dddelement/InfrastAclElementBean.java | 12 + .../dddelement/MqConsumerElementBean.java | 13 + .../bean/dddelement/MqHandlerElementBean.java | 13 + .../dddelement/MqProducerElementBean.java | 13 + .../bean/dddelement/PackageElementBean.java | 12 + .../dddelement/RepositoryElementBean.java | 14 + .../bean/dddelement/ServiceElementBean.java | 14 + .../dddelement/ValueObjectElementBean.java | 14 + .../ControllerElementBean.java | 16 + .../DoBoConvertElementBean.java | 16 + .../Dto2DtoConvertElementBean.java | 16 + .../DtoBoConvertElementBean.java | 16 + .../bean/dddelementderive/DtoElementBean.java | 16 + .../dddelementderive/EnumElementBean.java | 16 + .../dddelementderive/FacadeElementBean.java | 16 + .../FacadeImplElementBean.java | 16 + .../FeignControllerElementBean.java | 16 + .../dddelementderive/FeignElementBean.java | 16 + .../GatawayImplElementBean.java | 16 + .../InfrastAclImplElementBean.java | 16 + .../RepositoryImplElementBean.java | 16 + .../ServiceImplElementBean.java | 16 + .../VoBoConvertElementBean.java | 16 + .../bean/dddelementderive/VoElementBean.java | 14 + .../bean/invoke/InvokeContextBean.java | 252 ++++++ .../codemaker/bean/invoke/InvokeRowBean.java | 212 +++++ .../bean/plantuml/AbstractClassBean.java | 748 ++++++++++++++++++ .../bean/plantuml/AnnotationBean.java | 12 + .../codemaker/bean/plantuml/ClassBean.java | 34 + .../codemaker/bean/plantuml/EnumBean.java | 82 ++ .../bean/plantuml/ExtendFieldBean.java | 126 +++ .../codemaker/bean/plantuml/FieldBean.java | 377 +++++++++ .../bean/plantuml/InterfaceBean.java | 31 + .../codemaker/bean/plantuml/MethodBean.java | 745 +++++++++++++++++ .../codemaker/bean/plantuml/PackageBean.java | 51 ++ .../codemaker/bean/plantuml/ParamBean.java | 67 ++ .../codemaker/bean/plantuml/PatternBean.java | 55 ++ .../bean/plantuml/PatternMethodBean.java | 14 + .../bean/plantuml/PlantUmlContextBean.java | 206 +++++ .../codemaker/bean/segment/SegmentBean.java | 113 +++ .../custom/bean/AdapterPomElementBean.java | 17 + .../custom/bean/AppPomElementBean.java | 17 + .../custom/bean/CustomElementBean.java | 16 + .../custom/bean/DomainPomElementBean.java | 17 + .../custom/bean/FeignApiPomElementBean.java | 17 + .../bean/FeignProviderPomElementBean.java | 17 + .../custom/bean/InfrastPomElementBean.java | 17 + .../custom/bean/ParentPomElementBean.java | 17 + .../codemaker/custom/bean/PomElementBean.java | 16 + .../custom/bean/StartPomElementBean.java | 17 + .../custom/bean/ValidatorElementBean.java | 17 + .../codemaker/custom/package-info.java | 1 + .../tianhua/codemaker/enums/ClassEnum.java | 49 ++ .../codemaker/enums/ClassRelationEnum.java | 119 +++ .../codemaker/enums/CodeElementEnum.java | 78 ++ .../tianhua/codemaker/enums/CompTypeEnum.java | 33 + .../codemaker/enums/ConfigFileEnum.java | 27 + .../enums/DomainDerivedElementEnum.java | 40 + .../codemaker/enums/DomainElementEnum.java | 61 ++ .../enums/MethodReturnClassTypeEnum.java | 69 ++ .../tianhua/codemaker/enums/ModuleEnum.java | 425 ++++++++++ .../codemaker/enums/TemplateFileEnum.java | 168 ++++ .../codemaker/enums/VisibilityEnum.java | 57 ++ .../enums/dynamic/AnnotationModifyOnEnum.java | 36 + .../enums/dynamic/DecorateTypeEnum.java | 37 + .../enums/dynamic/InvokeLayerTypeEnum.java | 120 +++ .../enums/dynamic/InvokeSceneTypeEnum.java | 137 ++++ .../enums/dynamic/ReadWriteTypeEnum.java | 155 ++++ .../service/ImportPackageService.java | 58 ++ .../codemaker/utils/StringHandleUtils.java | 133 ++++ .../codemaker/utils/StringHelperUtils.java | 88 +++ .../liteflow/EleNodeCmpDecorateHandler.java | 45 ++ .../liteflow/EleSlotBODecorateHandler.java | 46 ++ .../element/ElementDecorateHandler.java | 8 +- .../impl/EleControllerDecorateHandler.java | 25 +- .../impl/EleFacadeDecorateHandler.java | 20 +- .../element/impl/EleFeignDecorateHandler.java | 23 +- .../codemaker/app/DubboAppService.java | 46 ++ .../codemaker/app/DynamicDDDAppService.java | 24 + .../dubbo/DubboApiDocWriteServiceImpl.java | 42 + .../app/dubbo/DubboApiWriteServiceImpl.java | 44 ++ .../dubbo/DubboCommonWriteServiceImpl.java | 49 ++ .../app/dubbo/DubboCoreWriteServiceImpl.java | 100 +++ .../DynamicDDDWriteServiceImpl.java | 114 +++ .../dynamicddd/ElementHandlerContainer.java | 61 ++ .../handler/DynamicMapperElementHandler.java | 336 ++++++++ .../DynamicMapperXmlElementHandler.java | 44 ++ .../handler/DynamicConvertHandler.java | 24 +- .../element/DynamicDDDVarRegistry.java | 26 +- .../registry/factory/ElementFactory.java | 116 +++ 129 files changed, 9314 insertions(+), 64 deletions(-) create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/annotations/ElementTag.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/DomainElementHandler.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompDecorateService.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompRegistService.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompScanService.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IJavsAdapterSerivce.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IValidateService.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ClassContentBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ColumnBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GeneratorSettingBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GlobalConstant.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/MapperMethodConstant.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/TableBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/WriteContentBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiDocBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiModuleBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiParamBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentConfigBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentContextBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/AnnotationTagBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ConfigFileBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/FtlBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/GAVBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/PomBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ProjectBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AclElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AggregateElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AppListenerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CacheElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CommandElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainBoElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainEventElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainMsgBodyElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ExecutorElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/FactoryElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/GatawayElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/InfrastAclElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqConsumerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqHandlerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqProducerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/PackageElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/RepositoryElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ServiceElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ValueObjectElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ControllerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DoBoConvertElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/EnumElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeImplElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignControllerElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/GatawayImplElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/RepositoryImplElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ServiceImplElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoBoConvertElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeContextBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeRowBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AbstractClassBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AnnotationBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ClassBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/EnumBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ExtendFieldBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/FieldBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/InterfaceBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/MethodBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PackageBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ParamBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternMethodBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PlantUmlContextBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/segment/SegmentBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AdapterPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AppPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/CustomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/DomainPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignApiPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignProviderPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/InfrastPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ParentPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/PomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/StartPomElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ValidatorElementBean.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/package-info.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassRelationEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeElementEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CompTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ConfigFileEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainDerivedElementEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainElementEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/MethodReturnClassTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ModuleEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/TemplateFileEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/VisibilityEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/AnnotationModifyOnEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/DecorateTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeLayerTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeSceneTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/ReadWriteTypeEnum.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/service/ImportPackageService.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHandleUtils.java create mode 100644 codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHelperUtils.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleNodeCmpDecorateHandler.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleSlotBODecorateHandler.java rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/element/ElementDecorateHandler.java (68%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/element/impl/EleControllerDecorateHandler.java (91%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/element/impl/EleFacadeDecorateHandler.java (88%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/element/impl/EleFeignDecorateHandler.java (87%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DubboAppService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DynamicDDDAppService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ElementHandlerContainer.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/handler/DynamicConvertHandler.java (86%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/DynamicDDDVarRegistry.java (88%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/factory/ElementFactory.java diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/annotations/ElementTag.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/annotations/ElementTag.java new file mode 100644 index 0000000..129484e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/annotations/ElementTag.java @@ -0,0 +1,33 @@ +package com.tianhua.codemaker.annotations; + +import com.tianhua.codemaker.enums.ClassEnum; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface ElementTag { + /** + * 代码元素类型---TemplateFileEnum + * @return + */ + String elementName() default ""; + + /** + * 代码元素类型---ClassEnum + * @return + */ + ClassEnum clazzType() default ClassEnum.CLASS; + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/DomainElementHandler.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/DomainElementHandler.java new file mode 100644 index 0000000..2f61ce4 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/DomainElementHandler.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface DomainElementHandler { + + T getElementBeanList(PlantUmlContextBean plantUmlContextBean); +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompDecorateService.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompDecorateService.java new file mode 100644 index 0000000..40eb847 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompDecorateService.java @@ -0,0 +1,23 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; + +/** + * Description: 组件规则定义完成之后,需要将 + * 组件包相关的类接口枚举注解等应用到对应的代码元素上 + * date: 2021/11/23 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@FunctionalInterface +public interface ICompDecorateService { + /** + * 组件上下文与代码模型上下文进行融合,对相关的代码元素做包装和装饰 + * @param componentContextBean 组件上下文 + * @param plantUmlContextBean 代码元素模型上下文 + */ + void decorateComp(ComponentContextBean componentContextBean, PlantUmlContextBean plantUmlContextBean); +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompRegistService.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompRegistService.java new file mode 100644 index 0000000..3dd92a5 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompRegistService.java @@ -0,0 +1,25 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.component.ComponentContextBean; + +/** + * Description:组件注册服务接口,这里主要用来将相对独立的工具类注册到组件中 + * 整体的独立类当作一个组件看待,独立工具类配置在/component/single-class文件夹 + * 中,一个独立类一个配置。 + * + * 由于独立类的注入扫描比较简单,这里相当于一个默认的实现,不需要用户二次开发 + * 用户只需要配置即可将独立的工具类应用在调用时序图文档里,并在生成的代码中被引用到 + * + * date: 2021/12/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface ICompRegistService { + /** + * 将独立工具类的配置列表扫描并注册为组件 + * @return + */ + ComponentContextBean registSingleClass(); +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompScanService.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompScanService.java new file mode 100644 index 0000000..0ca9d7e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/ICompScanService.java @@ -0,0 +1,24 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.component.ComponentContextBean; + +import java.util.List; +import java.util.Map; + +/** + * Description:组件扫描注册服务类 + * + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@FunctionalInterface +public interface ICompScanService { + /** + * 组件扫描核心接口 + * @return + */ + Map scanComponent(List componentList); +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IJavsAdapterSerivce.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IJavsAdapterSerivce.java new file mode 100644 index 0000000..64ba35e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IJavsAdapterSerivce.java @@ -0,0 +1,27 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; + +/** + * Description: + * date: 2022/3/10 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface IJavsAdapterSerivce { + /** + * codeMaker适配javs翻译引擎 + * @param plantUmlContextBean + * @param javsScriptProjectPath + */ + void translateJavsScript(PlantUmlContextBean plantUmlContextBean, String javsScriptProjectPath); + + /** + * 基于plantuml文档生成javs脚本项目 + * @param plantUmlContextBean + * @param javsScriptProjectPath + */ + void generateJavsScriptProject(PlantUmlContextBean plantUmlContextBean,String javsScriptProjectPath); +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IValidateService.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IValidateService.java new file mode 100644 index 0000000..96f7baf --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/api/IValidateService.java @@ -0,0 +1,22 @@ +package com.tianhua.codemaker.api; + +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; + +/** + * Description:参数校验逻辑植入服务接口 + * + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface IValidateService { + + /** + * 统一参数校验模式 + * @param plantUmlContextBean + */ + void dealValidate(PlantUmlContextBean plantUmlContextBean); + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ClassContentBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ClassContentBean.java new file mode 100644 index 0000000..ec5bed8 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ClassContentBean.java @@ -0,0 +1,95 @@ +package com.tianhua.codemaker.bean; + +/** + * Description: + * date: 2021/6/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ClassContentBean { + /** + * 文件内容 + */ + private String classContent; + + /** + * 文件路径 + */ + private String classFilePath; + + + private String childPackageName; + + private String classSuffix; + + private String humpClassName; + + /** + * 类所在包名,包括子包 + */ + private String classPackageName; + + /** + * 所属模块 + */ + private String modulePath; + + public String getModulePath() { + return modulePath; + } + + public void setModulePath(String modulePath) { + this.modulePath = modulePath; + } + + public String getClassPackageName() { + return classPackageName; + } + + public void setClassPackageName(String classPackageName) { + this.classPackageName = classPackageName; + } + + public String getChildPackageName() { + return childPackageName; + } + + public void setChildPackageName(String childPackageName) { + this.childPackageName = childPackageName; + } + + public String getClassSuffix() { + return classSuffix; + } + + public void setClassSuffix(String classSuffix) { + this.classSuffix = classSuffix; + } + + public String getClassFilePath() { + return classFilePath; + } + + public void setClassFilePath(String classFilePath) { + this.classFilePath = classFilePath; + } + + public String getHumpClassName() { + return humpClassName; + } + + public void setHumpClassName(String humpClassName) { + this.humpClassName = humpClassName; + } + + public String getClassContent() { + return classContent; + } + + public void setClassContent(String classContent) { + this.classContent = classContent; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ColumnBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ColumnBean.java new file mode 100644 index 0000000..73bd6bb --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/ColumnBean.java @@ -0,0 +1,203 @@ +package com.tianhua.codemaker.bean; + +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.enums.VisibilityEnum; + +/** + * Created on 2018-7-19. + * + * @author: coderman + * @version: V1.0 + * @Desc: 表字段描述 + */ +public class ColumnBean { + /** + * 表名 + */ + private String tableName; + /** + * 字段名 + */ + private String columnName; + /** + * 默认值 + */ + private String columnDefaultValue; + /** + * 数据类型 + */ + private String dataType; + /** + * 字段特殊描述值 + */ + private String extraInfo; + /** + * 是否是主键(或者其他键) + */ + private String columnKey; + + /** + * 是否可以为空,NO,YES + */ + private String isNullable; + + /** + * 字段类型 + */ + private String columnType; + + /** + * 字段描述 + */ + private String columnComment; + + /** + * 字段类型对应的javaentity的类型名 + */ + private String columnTypeName; + + /** + * 字段对应的javaentity属性名 + */ + private String columnFieldName; + + /** + * 字段对应的mybatis resultMap的jdbc类型 + */ + private String columnJdbcTypeName; + + /** + * 字段对应的大写类名 + */ + private String columnUperName; + + public String getColumnUperName() { + return columnUperName; + } + + public void setColumnUperName(String columnUperName) { + this.columnUperName = columnUperName; + } + + public String getColumnJdbcTypeName() { + return columnJdbcTypeName; + } + + public void setColumnJdbcTypeName(String columnJdbcTypeName) { + this.columnJdbcTypeName = columnJdbcTypeName; + } + + public String getColumnTypeName() { + return columnTypeName; + } + + public void setColumnTypeName(String columnTypeName) { + this.columnTypeName = columnTypeName; + } + + public String getColumnFieldName() { + return columnFieldName; + } + + public void setColumnFieldName(String columnFieldName) { + this.columnFieldName = columnFieldName; + } + + public String getTableName() { + + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public String getColumnDefaultValue() { + return columnDefaultValue; + } + + public void setColumnDefaultValue(String columnDefaultValue) { + this.columnDefaultValue = columnDefaultValue; + } + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public String getExtraInfo() { + return extraInfo; + } + + public void setExtraInfo(String extraInfo) { + this.extraInfo = extraInfo; + } + + public String getColumnKey() { + return columnKey; + } + + public void setColumnKey(String columnKey) { + this.columnKey = columnKey; + } + + public String getIsNullable() { + return isNullable; + } + + public void setIsNullable(String isNullable) { + this.isNullable = isNullable; + } + + public String getColumnType() { + return columnType; + } + + public void setColumnType(String columnType) { + this.columnType = columnType; + } + + public String getColumnComment() { + return columnComment; + } + + public void setColumnComment(String columnComment) { + this.columnComment = columnComment; + } + + @Override + public String toString() { + return "ColumnBean{" + + "tableName='" + tableName + '\'' + + ", columnName='" + columnName + '\'' + + ", columnDefaultValue='" + columnDefaultValue + '\'' + + ", dataType='" + dataType + '\'' + + ", extraInfo='" + extraInfo + '\'' + + ", columnKey='" + columnKey + '\'' + + ", isNullable='" + isNullable + '\'' + + ", columnType='" + columnType + '\'' + + ", columnComment='" + columnComment + '\'' + + '}'; + } + + public FieldBean convert2FieldBean(){ + FieldBean fieldBean = new FieldBean(); + fieldBean.setDesc(columnComment); + fieldBean.setVisibility(VisibilityEnum.PRIVATE.getVisibility()); + fieldBean.setDbColumnName(columnName); + fieldBean.setFieldName(columnTypeName+" "+ columnFieldName); + return fieldBean; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GeneratorSettingBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GeneratorSettingBean.java new file mode 100644 index 0000000..a7fba7f --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GeneratorSettingBean.java @@ -0,0 +1,66 @@ +package com.tianhua.codemaker.bean; + + +/** + * @Description:类配置信息,后期存储在数据库或配置文件中 + * @Author:coderman + * @CreateTime:2018年8月28日下午11:19:41 + * @version v1.0 + */ +@Deprecated +public class GeneratorSettingBean { + + private String ftlFilePath; + private String javaFileSubPackage; + private String javaFileSuffix; + private String javaFileName; + private String fileKey; + + + public GeneratorSettingBean() {} + public GeneratorSettingBean(String ftlFilePath, String javaFileSubPackage, String javaFileName) { + this.ftlFilePath = ftlFilePath; + this.javaFileSubPackage = javaFileSubPackage; + this.javaFileName = javaFileName; + } + + public String getFtlFilePath() { + return ftlFilePath; + } + + public void setFtlFilePath(String ftlFilePath) { + this.ftlFilePath = ftlFilePath; + } + + public String getJavaFileSubPackage() { + return javaFileSubPackage; + } + + public void setJavaFileSubPackage(String javaFileSubPackage) { + this.javaFileSubPackage = javaFileSubPackage; + } + + public String getJavaFileSuffix() { + return javaFileSuffix; + } + + public void setJavaFileSuffix(String javaFileSuffix) { + this.javaFileSuffix = javaFileSuffix; + } + + public String getJavaFileName() { + return javaFileName; + } + + public void setJavaFileName(String javaFileName) { + this.javaFileName = javaFileName; + } + + public String getFileKey() { + return fileKey; + } + + public void setFileKey(String fileKey) { + this.fileKey = fileKey; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GlobalConstant.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GlobalConstant.java new file mode 100644 index 0000000..9626aea --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/GlobalConstant.java @@ -0,0 +1,305 @@ +package com.tianhua.codemaker.bean; + +/** + * Description: + * date: 2021/7/12 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class GlobalConstant { + /** + * plantuml bo中的特殊属性-标示bo-table的对应关系 + */ + public static final String TABLE_KEY = "tablekey"; + + /** + * plantuml bo中的特殊属性-标示dto别名 + */ + public static final String DTO_KEY_LIST = "dtokeylist"; + + /** + * plantuml bo中的特殊属性-标示facade接口名称 + */ + public static final String FACADE_KEY = "facadekey"; + + /** + * plantuml bo中的特殊属性-标示vo类名 + */ + public static final String VO_KEY_LIST = "vokeylist"; + + /** + * plantuml bo中的特殊属性-标示controller类名 + */ + public static final String CONTROLLER_KEY = "controllerkey"; + + + /** + * plantuml enum中的特殊属性-标示enum要复制到rpc client模块中 + */ + public static final String COPY2RPC_CLIENT_KEY = "torpcclient"; + + + /** + * plantuml invoke动态调用流程图的链路标示 + */ + public static final String INVOKE_TAG = "invoke"; + + + + /** + * plantuml bo中的特殊属性-标示BO对应的业务方法调用流程 + */ + public static final String INVOKE_FILE_KEY = "invokefilekey"; + + /** + * plantuml bo中的特殊属性-标示BO对象是哪个上下文的,帮助按上下文分包 + */ + public static final String CONTEXT_KEY = "contextkey"; + + + + /** + * plantuml bo中的特殊属性-标示BO对象的派生查询dto + */ + public static final String QUERY_DTO_KEY = "querydtokey"; + + + + /** + * plantuml bo中的特殊属性-标示BO对象的派生查询vo + */ + public static final String QUERY_VO_KEY = "queryvokey"; + + + /** + * plantuml bo中的特殊属性-标示BO对象需要导出参数到下游哪个服务的哪个接口做防腐适配 + */ + public static final String EXPORT_ACL_KEY = "exportaclkey"; + + /** + * plantuml bo中的特殊属性-标示 api参数是否需要校验 + */ + public static final String VALIDATE_KEY = "validatekey"; + + + + + /** + * 调用时序文档存储文件夹名称 + */ + public static final String INVOKE_SEQUENCE_FILE_DIR = "invoke-plantuml"; + + + /** + * 领域类图模型文档存储文件夹名称 + */ + public static final String DOMAIN_MODLE_FILE_DIR = "ddd-plantuml"; + + + /** + * 以!开头的则忽略解析 + */ + public static final String PLANT_DOC_IGNORE = "!"; + + + /** + * api doc文件名称 + */ + public static final String API_DOC = "api-doc"; + /** + * plantuml doc文件名称 + */ + public static final String PLANT_UML_DOC = "uml-doc"; + + public static final String PACKAGE_$ = "${package}"; + + /** + * 存放工具类 独立类的文件目录名 + */ + public static final String SINGLE_CLASS_COMMON = "singleClass"; + + /** + * 存放配置文件模板的文件目录名 + */ + public static final String CONFIG = "config"; + /** + * 组件配置文件key--version + */ + public static final String COMP_VERSION="version"; + + /** + * 组件配置文件key--groupId + */ + public static final String COMP_GROUPID="groupId"; + + /** + * 组件配置文件key--artifactId + */ + public static final String COMP_ARTIFACTID="artifactId"; + + + /** + * 组件包扫描的包名称 + */ + public static final String COMP_PACKAGE = "packageName"; + + /** + * 组件代表的服务别名 + */ + public static final String COMP_SERVICE_NAME = "serviceName"; + + + /** + * 组件官网 + */ + public static final String COMP_SITE = "compSite"; + + /** + * 组件简述 + */ + public static final String COMP_DESC = "compDesc"; + + /** + * pom类型 + */ + public static final String COMP_GAV_TYPE = "type"; + /** + * pom类型 + */ + public static final String COMP_GAV_SCOPE = "scope"; + + /** + * 组件类型 + */ + public static final String COMP_TYPE = "compType"; + + /** + * 独立类-类型 + */ + public static final String COMP_SINGLE_CLASS_TYPE = "classType"; + + /** + * 需要扫描的类列表前缀 + */ + public static final String COMP_CLASS_PRE = "class"; + + + /** + * 需要扫描的接口列表前缀 + */ + public static final String COMP_INTERFACE_PRE = "interface"; + + /** + * 需要扫描的枚举列表前缀 + */ + public static final String COMP_ENUM_PRE = "enum"; + + /** + * 需要扫描的方法列表前缀 + */ + public static final String COMP_CLASS_METHOD_PRE = "method"; + /** + * 需要扫描的配置文件内容 + */ + public static final String COMP_CONFIG_NAME = "configName"; + + /** + * 需要扫描的排除GA + */ + public static final String COMP_EXCLUSION_GA_LIST = "exclusionGAList"; + /** + * 需要扫描的方法列表前缀 + */ + public static final String COMP_FIELD_PRE = "field"; + + + /** + * 需要扫描的注解列表前缀 + */ + public static final String COMP_ANNOTATION_PRE = "annotation"; + + + + /** + * 注解需要修饰的地方 + */ + public static final String COMP_MODIFY_ON = "modifyOn"; + + + /** + * 注解tag别名 + */ + public static final String COMP_ANNOTATION_ALIAS = "classAlias"; + + + /** + * 扫描组件的文件前缀 + */ + public static final String COMP_COMPONENT_PATH_PRE = "/component/"; + + /** + * 独立类组件扫描路径 + */ + public static final String COMP_COMPONENT_SINGLE_CLASS_PATH = COMP_COMPONENT_PATH_PRE + "singleClass"; + + /** + * 注解标签扫描路径 + */ + public static final String COMP_COMPONENT_ANNOTATION_TAG_PATH = COMP_COMPONENT_PATH_PRE + "annotationClass"; + + + + /** + * 配置的包依赖 + */ + public static final String CLASS_IMPORT_FILE = "/class-import.properties"; + + + + + public static final String REQUEST_DTO = "requestdto"; + public static final String RESPONSE_DTO = "responsedto"; + + + public static final String REQUEST_VO = "requestvo"; + public static final String RESPONSE_VO = "responsevo"; + + + + public static final String CUSTOM_CLASS = "customclass"; + + + + + /**--------模块名---------**/ + + public static final String API = "-api"; + + public static final String APP = "-app"; + + public static final String CLIENT = "-client"; + + public static final String DOMAIN = "-domain"; + + public static final String START = "-start"; + + public static final String ADAPTER = "-adapter"; + + public static final String COMMON = "-common"; + + public static final String CORE = "-core"; + + public static final String INFRAST = "-infrast"; + + public static final String FEIGN_API = "-feignapi"; + + public static final String FEIGN_PROVIDER = "-feignprovider"; + + public static final String PROVIDER = "-provider"; + + public static final String SPRING_BOOT = "-springboot"; + + public static String PARENT = "parent"; +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/MapperMethodConstant.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/MapperMethodConstant.java new file mode 100644 index 0000000..8f3c4b7 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/MapperMethodConstant.java @@ -0,0 +1,30 @@ +package com.tianhua.codemaker.bean; + +import java.util.HashSet; +import java.util.Set; + +/** + * Description: mapperxml默认方法名 + * date: 2021/10/27 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class MapperMethodConstant { + public static final String INSERT = "insert"; + public static final String UPDATE = "update"; + public static final String GET_BYID = "getById"; + public static final String GET_ALL = "getAll"; + public static final String DELETE_BYID = "deleteById"; + public static Set defaultMethodSet(){ + Set set = new HashSet<>(); + set.add(INSERT); + set.add(UPDATE); + set.add(DELETE_BYID); + set.add(GET_ALL); + set.add(GET_BYID); + + return set; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/TableBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/TableBean.java new file mode 100644 index 0000000..3b45081 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/TableBean.java @@ -0,0 +1,245 @@ +package com.tianhua.codemaker.bean; + +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created on 2018-7-19. + * + * @author: shenshuai + * @version: V1.0 + * @Desc:表信息描述 + */ +public class TableBean { + /** + * 表名 + */ + private String tableName; + /** + * 表描述 + */ + private String tableComment; + + + /** + * 使用的存储引擎 + */ + private String engineName; + + /** + * 字符集 + */ + private String tableCollation; + + /** + * 表记录数 + */ + private Long tableRows; + + /** + * 表名对应的驼峰式命名 + */ + private String humpTableName; + + /** + * 表名对应的类名 + */ + private String humpClassName; + /** + * 列名列表,字符串逗号分割 + */ + private String columnNameList; + + /** + * 插入sql value替换字符串 + */ + private String insertColumnNameList; + + /** + * 插入sql value替换字符串 + */ + private String insertColumnNames; + + + /** + * 修改sql value替换字符串 + */ + private String updateColumnNameList; + + + /** + * 转换对应的class信息,打通dynamicddd派生类生成 + */ + private ClassBean classBean; + + /** + * 将tablebean对象转换为classBean对象,代表DO类对象 + * @param packageName + * @param columnBeanList + * @return + */ + public ClassBean convertToClassBean(String packageName,List columnBeanList){ + ClassBean classBean = new ClassBean(); + classBean.setClassName(this.getHumpClassName()+"DO"); + classBean.setPackageName(packageName); + classBean.setClassDesc(tableComment); + classBean.setPlantUMLPackage("dao.dataobject"); + + classBean.setMethodBeanList(Lists.newArrayList()); + classBean.setTableBean(this); + classBean.setColumnBeanList(columnBeanList); + + if(CollectionUtils.isNotEmpty(columnBeanList)){ + List fieldBeanList = new ArrayList<>(); + columnBeanList.forEach(columnBean -> fieldBeanList.add(columnBean.convert2FieldBean())); + classBean.setFieldBeanList(fieldBeanList); + }else { + classBean.setFieldBeanList(Lists.newArrayList()); + } + return classBean; + } + + /** + * 将mapper层整体注册到plantUmlContextBean 上下文中 + * @param packageName + * @return + */ + public InterfaceBean convertToMapperInterface(String packageName,List columnBeanList, boolean useMybatisPlus){ + InterfaceBean interfaceBean = new InterfaceBean(); + interfaceBean.setClassName(this.getHumpClassName()+"Mapper"); + interfaceBean.setPackageName(packageName); + interfaceBean.setClassDesc(tableComment); + interfaceBean.setPlantUMLPackage("dao.mapper"); + String doPackageName = packageName.replace("mapper","dataobject"); + String importDO = doPackageName+"."+this.getHumpClassName()+"DO"; + interfaceBean.setImportClassList(Lists.newArrayList(importDO)); + if(useMybatisPlus){ + interfaceBean.setMethodBeanList(Lists.newArrayList()); + }else { + interfaceBean.setMethodBeanList(getDefaultMapperMethod()); + } + interfaceBean.setTableBean(this); + interfaceBean.setColumnBeanList(columnBeanList); + + + return interfaceBean; + } + + public ClassBean getClassBean() { + + return classBean; + } + + public void setClassBean(ClassBean classBean) { + this.classBean = classBean; + } + + public String getInsertColumnNames() { + return insertColumnNames; + } + + public void setInsertColumnNames(String insertColumnNames) { + this.insertColumnNames = insertColumnNames; + } + + public String getUpdateColumnNameList() { + return updateColumnNameList; + } + + public void setUpdateColumnNameList(String updateColumnNameList) { + this.updateColumnNameList = updateColumnNameList; + } + + public String getInsertColumnNameList() { + return insertColumnNameList; + } + + public void setInsertColumnNameList(String insertColumnNameList) { + this.insertColumnNameList = insertColumnNameList; + } + + public String getColumnNameList() { + return columnNameList; + } + + public void setColumnNameList(String columnNameList) { + this.columnNameList = columnNameList; + } + + public String getHumpClassName() { + return humpClassName; + } + + public void setHumpClassName(String humpClassName) { + this.humpClassName = humpClassName; + } + + public String getHumpTableName() { + return humpTableName; + } + + public void setHumpTableName(String humpTableName) { + this.humpTableName = humpTableName; + } + + public Long getTableRows() { + return tableRows; + } + + public void setTableRows(Long tableRows) { + this.tableRows = tableRows; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getTableComment() { + return tableComment; + } + + public void setTableComment(String tableComment) { + this.tableComment = tableComment; + } + + public String getEngineName() { + return engineName; + } + + public void setEngineName(String engineName) { + this.engineName = engineName; + } + + public String getTableCollation() { + return tableCollation; + } + + public void setTableCollation(String tableCollation) { + this.tableCollation = tableCollation; + } + + + public List getDefaultMapperMethod(){ + List methodBeanList = new ArrayList<>(); + String paramType = this.getHumpClassName()+"DO"; + String varName = paramType.substring(0,1).toLowerCase()+paramType.substring(1); + methodBeanList.add(new MethodBean("insert("+paramType+" "+varName+")","long","保存数据记录")); + methodBeanList.add(new MethodBean("update("+paramType+" "+varName+")","int","更新数据记录")); + methodBeanList.add(new MethodBean("getAll()","List<"+paramType+">","获取所有数据记录")); + methodBeanList.add(new MethodBean("getById(Long id)",paramType,"根据ID获取单条记录")); + methodBeanList.add(new MethodBean("deleteById(Long id)","int","根据ID删除单条记录")); + methodBeanList.stream().forEach(methodBean -> methodBean.buildParamArr()); + return methodBeanList; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/WriteContentBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/WriteContentBean.java new file mode 100644 index 0000000..f261448 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/WriteContentBean.java @@ -0,0 +1,120 @@ +package com.tianhua.codemaker.bean; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import lombok.Builder; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +/** + * Description: + * date: 2021/7/2 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Builder +@Data +public class WriteContentBean { + private String templateName; + private String content; + private String humpClassName; + private String classPackageName; + + /** + * 是否是自定义的代码元素 + */ + private boolean customCodeElement; + + public boolean isCustomCodeElement() { + return customCodeElement; + } + + public void setCustomCodeElement(boolean customCodeElement) { + this.customCodeElement = customCodeElement; + } + + private AbstractClassBean abstractClassBean; + + public AbstractClassBean getAbstractClassBean() { + return abstractClassBean; + } + + public void setAbstractClassBean(AbstractClassBean abstractClassBean) { + this.abstractClassBean = abstractClassBean; + } + + public String getTemplateName() { + return templateName; + } + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getHumpClassName() { + return humpClassName; + } + + public void setHumpClassName(String humpClassName) { + this.humpClassName = humpClassName; + } + + /** + * 将writeContentbean对象转换为classcontentBean对象 + * @return + */ + public ClassContentBean buildClassContentBean(String modulePath){ + ClassContentBean classContentBean = new ClassContentBean(); + classContentBean.setClassContent(this.getContent()); + classContentBean.setHumpClassName(this.getHumpClassName()); + classContentBean.setClassPackageName(this.getClassPackageName()); + classContentBean.setClassSuffix(""); + classContentBean.setModulePath(modulePath); + return classContentBean; + } + + /** + * 将writeContentbean对象转换为classcontentBean对象 + * @param moduleCode + * @param modulePath + * @return + */ + public ClassContentBean buildClassContentBean(String moduleCode, String modulePath){ + ClassContentBean classContentBean = new ClassContentBean(); + classContentBean.setClassContent(this.getContent()); + classContentBean.setHumpClassName(this.getHumpClassName()); + classContentBean.setClassPackageName(this.getClassPackageName()); + String classSuffix = TemplateFileEnum.getClassSuffix(this.getTemplateName()); + if(StringUtils.isNotEmpty(classSuffix)){ + classContentBean.setClassSuffix(classSuffix); + }else { + classContentBean.setClassSuffix(""); + } + + classContentBean.setModulePath(modulePath); + String defaultChildPackageName = TemplateFileEnum.getChildPackageName(this.getTemplateName()); + + String childPackageName; + if(defaultChildPackageName.startsWith(moduleCode)){ + childPackageName = defaultChildPackageName; + }else { + childPackageName = moduleCode + "." + defaultChildPackageName; + + } + classContentBean.setChildPackageName(childPackageName); + + return classContentBean; + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiDocBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiDocBean.java new file mode 100644 index 0000000..045c4cf --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiDocBean.java @@ -0,0 +1,112 @@ +package com.tianhua.codemaker.bean.apidoc; + +import java.util.List; + +/** + * Description: 支持http rpc的接口文档模型 + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ApiDocBean { + + /** + * 接口名称 + * controller--method a/b/c + * rpc---method + */ + private String interfaceName; + + /** + * 参数列表 + */ + private List paramBeanList; + + /** + * 接口文档描述 + */ + private String interfaceDesc; + + /** + * 返回值类信息 + */ + private String returnClass; + + + /** + * 入参json 案例 + */ + private String paramJsonDemo; + + + /** + * 出参json 案例 + */ + private String returnJsonDemo; + + /** + * http接口的访问路径 + */ + private String httpPath; + + public String getHttpPath() { + return httpPath; + } + + public void setHttpPath(String httpPath) { + this.httpPath = httpPath; + } + + public String getInterfaceName() { + return interfaceName; + } + + public void setInterfaceName(String interfaceName) { + this.interfaceName = interfaceName; + } + + public List getParamBeanList() { + return paramBeanList; + } + + public void setParamBeanList(List paramBeanList) { + this.paramBeanList = paramBeanList; + } + + public String getInterfaceDesc() { + return interfaceDesc; + } + + public void setInterfaceDesc(String interfaceDesc) { + this.interfaceDesc = interfaceDesc; + } + + public String getReturnClass() { + return returnClass; + } + + public void setReturnClass(String returnClass) { + this.returnClass = returnClass; + } + + public String getParamJsonDemo() { + return paramJsonDemo; + } + + public void setParamJsonDemo(String paramJsonDemo) { + this.paramJsonDemo = paramJsonDemo; + } + + public String getReturnJsonDemo() { + return returnJsonDemo; + } + + public void setReturnJsonDemo(String returnJsonDemo) { + this.returnJsonDemo = returnJsonDemo; + } + + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiModuleBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiModuleBean.java new file mode 100644 index 0000000..7e7f50e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiModuleBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.apidoc; + +/** + * Description:模块/接口类级别的文档描述 + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ApiModuleBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiParamBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiParamBean.java new file mode 100644 index 0000000..34b9f88 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/apidoc/ApiParamBean.java @@ -0,0 +1,63 @@ +package com.tianhua.codemaker.bean.apidoc; + +/** + * Description: + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ApiParamBean { + /** + * 属性名称 + */ + private String fieldName; + + /** + * 属性类型 + */ + private String fieldType; + + /** + * 属性描述 + */ + private String fieldDesc; + + /** + * 是否可为空 + */ + private String nullable; + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public String getFieldType() { + return fieldType; + } + + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + + public String getFieldDesc() { + return fieldDesc; + } + + public void setFieldDesc(String fieldDesc) { + this.fieldDesc = fieldDesc; + } + + public String getNullable() { + return nullable; + } + + public void setNullable(String nullable) { + this.nullable = nullable; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentConfigBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentConfigBean.java new file mode 100644 index 0000000..0705976 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentConfigBean.java @@ -0,0 +1,216 @@ +package com.tianhua.codemaker.bean.component; + + +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description: + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Data +public class ComponentConfigBean { + + /** + * maven GAV + */ + private String artifactId; + + private String groupId; + + private String version; + + + private String type; + + private String scope; + + private String desc; + + /** + * 如果GAV找不到则通过jarPath找 + */ + private String jarPath; + + /** + * 目标类所在的包名 + */ + private String packageName; + + /** + * 组件代表的别名 + */ + private String serviceName; + + /** + * 组件类型--CompTypeEnum + */ + private String compType; + + /** + * 类-类型 + */ + private String classType; + + + /** + * 组件官网 + */ + private String compSite; + + /** + * 组件描述 + */ + private String compDesc; + + /** + * 组件配置名称 + * + */ + private String configName; + + /** + * 组件要排除的依赖项 + */ + private String exclusionGAList; + + /** + * 接口列表 + */ + private List interfaceList = new ArrayList<>(); + + /** + * 类列表 + */ + private List classList = new ArrayList<>(); + + /** + * 枚举列表 + */ + private List enumList = new ArrayList<>(); + + /** + * 注解列表 + */ + private List annotationList = new ArrayList<>(); + + /** + * 方法列表 + */ + private Map> methodMap = new HashMap<>(); + + /** + * 属性列表 + */ + private Map> fieldMap = new HashMap<>(); + + /** + * 组件配置内容 + */ + private List configList = new ArrayList<>(); + + public void addClass(String clazz){ + if(StringUtils.isNotEmpty(this.getPackageName())){ + clazz = this.getPackageName()+"."+clazz; + } + this.classList.add(clazz); + } + + public void addInterface(String interfaceName){ + if(StringUtils.isNotEmpty(this.getPackageName())){ + interfaceName = this.getPackageName()+"."+interfaceName; + } + this.interfaceList.add(interfaceName); + } + + public void addAnnotation(String annotation){ + if(StringUtils.isNotEmpty(this.getPackageName())){ + annotation = this.getPackageName()+"."+annotation; + } + this.annotationList.add(annotation); + } + + + public void addEnum(String enumClass){ + if(StringUtils.isNotEmpty(this.getPackageName())){ + enumClass = this.getPackageName()+"."+enumClass; + } + this.enumList.add(enumClass); + } + + public void addMethod(String className, String methodStr){ + List methodList = this.methodMap.get(className); + if(CollectionUtils.isEmpty(methodList)){ + methodList = new ArrayList<>(); + methodList.add(methodStr); + methodMap.put(className, methodList); + return; + } + methodList.add(methodStr); + methodMap.put(className, methodList); + } + + public void addField(String className, String fieldStr){ + List fieldList = this.fieldMap.get(className); + + if(CollectionUtils.isEmpty(fieldList)){ + fieldList = new ArrayList<>(); + fieldList.add(fieldStr); + fieldMap.put(className, fieldList); + return; + } + fieldList.add(fieldStr); + fieldMap.put(className, fieldList); + } + + + + /** + * 构建需要读取的jar包绝对路径,带jar的 + * @return + */ + public String buildRepoJarPath(String mvnRepoPath){ + String path = mvnRepoPath + "/" + this.getGroupId().replace(".","/")+"/"+this.getArtifactId()+"/"+this.getVersion(); + String jarName = this.getArtifactId()+"-"+this.getVersion()+".jar"; + return path + "/" + jarName+"!/"; + } + + /** + * 构建需要读取的jar包绝对路径 + * @return + */ + public String buildJarPath(String mvnRepoPath){ + String path = mvnRepoPath.replace("jar:file://","") + "/" + this.getGroupId().replace(".","/")+"/"+this.getArtifactId()+"/"+this.getVersion(); + String jarName = this.getArtifactId()+"-"+this.getVersion()+".jar"; + return path + "/" + jarName; + } + + @Override + public String toString() { + return "ComponentConfigBean{" + + "artifactId='" + artifactId + '\'' + + ", groupId='" + groupId + '\'' + + ", version='" + version + '\'' + + ", desc='" + desc + '\'' + + ", jarPath='" + jarPath + '\'' + + ", packageName='" + packageName + '\'' + + ", serviceName='" + serviceName + '\'' + + ", compType='" + compType + '\'' + + ", classType='" + classType + '\'' + + ", compSite='" + compSite + '\'' + + ", compDesc='" + compDesc + '\'' + + '}'; + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentContextBean.java new file mode 100644 index 0000000..9531db7 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/component/ComponentContextBean.java @@ -0,0 +1,179 @@ +package com.tianhua.codemaker.bean.component; + +import com.tianhua.codemaker.bean.plantuml.AnnotationBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.EnumBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.List; +import java.util.Optional; + +/** + * Description:组件上下文bean + * date: 2021/11/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ComponentContextBean { + + /** + * 组件名称---服务名称 + */ + private String componentName; + + /** + * 组件类型--CompTypeEnum + */ + private String compType; + + + /** + * 组件需要暴露的枚举类 + */ + private List enumBeanList; + + /** + * 组件需要暴露的class类 + */ + private List classBeanList; + + /** + * 组件需要暴露的接口类 + */ + private List interfaceBeanList; + + /** + * 注解列表 + */ + private List annotationList; + + /** + * 组件配置信息 + */ + private ComponentConfigBean componentConfigBean; + + public ComponentConfigBean getComponentConfigBean() { + return componentConfigBean; + } + + public void setComponentConfigBean(ComponentConfigBean componentConfigBean) { + this.componentConfigBean = componentConfigBean; + } + + public List getAnnotationList() { + return annotationList; + } + + public void setAnnotationList(List annotationList) { + this.annotationList = annotationList; + } + + public String getComponentName() { + return componentName; + } + + public void setComponentName(String componentName) { + this.componentName = componentName; + } + + public List getEnumBeanList() { + return enumBeanList; + } + + public void setEnumBeanList(List enumBeanList) { + this.enumBeanList = enumBeanList; + } + + public List getClassBeanList() { + return classBeanList; + } + + public void setClassBeanList(List classBeanList) { + this.classBeanList = classBeanList; + } + + public List getInterfaceBeanList() { + return interfaceBeanList; + } + + public void setInterfaceBeanList(List interfaceBeanList) { + this.interfaceBeanList = interfaceBeanList; + } + + public String getCompType() { + return compType; + } + + public void setCompType(String compType) { + this.compType = compType; + } + + @Override + public String toString() { + return "ComponentContextBean{" + + "componentName='" + componentName + '\'' + + ", enumBeanList=" + enumBeanList + + ", classBeanList=" + classBeanList + + ", interfaceBeanList=" + interfaceBeanList + + '}'; + } + + /** + * 获取目标注解信息 + * @param annotationClass + * @return + */ + public AnnotationBean getTargetAnnotation(String annotationClass){ + if(CollectionUtils.isEmpty(this.getAnnotationList())){ + return null; + } + Optional annotationBeanOptional = this.getAnnotationList().stream().filter(annotationBean -> annotationBean.getClassName().equals(annotationClass)).findFirst(); + if(annotationBeanOptional.isPresent()){ + return annotationBeanOptional.get(); + } + return null; + } + + /** + * 获取目标interface信息 + * @param className + * @return + */ + public InterfaceBean getTargetInterface(String className){ + if(CollectionUtils.isEmpty(this.getInterfaceBeanList())){ + return null; + } + Optional classBeanOptional = this.getInterfaceBeanList().stream().filter(classBean -> classBean.getClassName().equals(className)).findFirst(); + if(classBeanOptional.isPresent()){ + return classBeanOptional.get(); + } + return null; + } + + /** + * 获取目标class信息 + * @param className + * @return + */ + public ClassBean getTargetClass(String className){ + if(CollectionUtils.isEmpty(this.getClassBeanList())){ + return null; + } + Optional classBeanOptional = this.getClassBeanList().stream().filter(classBean -> classBean.getClassName().equals(className)).findFirst(); + if(classBeanOptional.isPresent()){ + return classBeanOptional.get(); + } + return null; + } + + /** + * 判断扫描出来的组件是否为空 + * @return + */ + public boolean isEmpty(){ + return CollectionUtils.isEmpty(this.getAnnotationList()) && CollectionUtils.isEmpty(this.getEnumBeanList()) && CollectionUtils.isEmpty(this.getClassBeanList()) && CollectionUtils.isEmpty(this.getInterfaceBeanList()); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/AnnotationTagBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/AnnotationTagBean.java new file mode 100644 index 0000000..e06897c --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/AnnotationTagBean.java @@ -0,0 +1,51 @@ +package com.tianhua.codemaker.bean.config; + +import com.tianhua.codemaker.enums.dynamic.AnnotationModifyOnEnum; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +/** + * Description: + * date: 2022/1/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Data +public class AnnotationTagBean { + /** + * 注解所在包 + */ + private String packageName; + /** + * 注解在plantuml 文档中的别名 + */ + private String classAlias; + /** + * 注解在方法或者类上的展示形式 + */ + private String annotation; + + /** + * 注解类名称 + */ + private String className; + + /** + * 注解需要装饰的目标 + */ + private String modifyOn; + + + public boolean modifyOnThis(){ + if(StringUtils.isEmpty(modifyOn)){ + return true; + } + + return modifyOn.equals(AnnotationModifyOnEnum.THIS.getCode()); + } + + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ConfigFileBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ConfigFileBean.java new file mode 100644 index 0000000..5b04bbb --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ConfigFileBean.java @@ -0,0 +1,84 @@ +package com.tianhua.codemaker.bean.config; + +/** + * Description:文件配置bean + * date: 2022/1/23 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ConfigFileBean { + + /** + * 文件名 + */ + private String configFileName; + + /** + * 文件后缀 + */ + private String configFileSuffix; + + /** + * 所属模块 + */ + private String moduleName; + + /** + * ftl文件模板名称 + */ + private String templateName; + + public String getTemplateName() { + return templateName; + } + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + public ConfigFileBean(){} + + public ConfigFileBean(String configFileName, String configFileSuffix, String moduleName){ + this.configFileName = configFileName; + this.configFileSuffix = configFileSuffix; + this.moduleName = moduleName; + } + + + /** + * 构建配置文件实例 + * @param configFileName + * @param configFileSuffix + * @param moduleName + * @return + */ + public static ConfigFileBean getInstance(String configFileName, String configFileSuffix, String moduleName){ + return new ConfigFileBean(configFileName,configFileSuffix,moduleName); + } + + public String getConfigFileSuffix() { + return configFileSuffix; + } + + public void setConfigFileSuffix(String configFileSuffix) { + this.configFileSuffix = configFileSuffix; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getConfigFileName() { + return configFileName; + } + + public void setConfigFileName(String configFileName) { + this.configFileName = configFileName; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/FtlBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/FtlBean.java new file mode 100644 index 0000000..b8cfcd2 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/FtlBean.java @@ -0,0 +1,72 @@ +package com.tianhua.codemaker.bean.config; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FtlBean { + /** + * 模块名称 + */ + private String moduleName; + /** + * class类型 + */ + private String classType; + /** + * 代码元素模板名称 + */ + private String codeTempFileName; + + /** + * 自定义模板配置字符串 + */ + private String ftlStr; + + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getClassType() { + return classType; + } + + public void setClassType(String classType) { + this.classType = classType; + } + + public String getCodeTempFileName() { + return codeTempFileName; + } + + public void setCodeTempFileName(String codeTempFileName) { + this.codeTempFileName = codeTempFileName; + } + + public String getFtlStr() { + return ftlStr; + } + + public void setFtlStr(String ftlStr) { + this.ftlStr = ftlStr; + } + + public static FtlBean getInstance(String ftlStr){ + String [] arr = ftlStr.split(":"); + FtlBean ftlBean = new FtlBean(); + ftlBean.setFtlStr(ftlStr); + ftlBean.setClassType(arr[1]); + ftlBean.setCodeTempFileName(arr[0]); + ftlBean.setModuleName(arr[2]); + return ftlBean; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/GAVBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/GAVBean.java new file mode 100644 index 0000000..cd9461d --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/GAVBean.java @@ -0,0 +1,36 @@ +package com.tianhua.codemaker.bean.config; + +import lombok.Data; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Data +public class GAVBean { + private String groupId; + private String artifactId; + private String version; + + private String type; + + private String scope; + + private String exclusionGAContent; + + + /** + * 所属服务组件名称 + */ + private String componentName; + + public GAVBean(){} + public GAVBean(String componentName){ + this.componentName = componentName; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/PomBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/PomBean.java new file mode 100644 index 0000000..6a63766 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/PomBean.java @@ -0,0 +1,167 @@ +package com.tianhua.codemaker.bean.config; + +import com.tianhua.codemaker.bean.WriteContentBean; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PomBean { + + /** + * 模块前缀 + */ + private String modulePrefix; + + private String appName; + + + /** + * pom.url + */ + private String url; + + + /** + * 模块名称 + */ + private String moduleName; + + + private String groupId; + private String artifactId; + private String version; + + + private String templateCode; + + private String moduleCode; + + /** + * 依赖的mv + */ + private List dependencyList; + + + public Map buildVarMap(){ + Map map = new HashMap<>(); + map.put("modulePrefix",modulePrefix); + map.put("groupId",groupId); + map.put("artifactId",artifactId); + map.put("version",version); + map.put("appName",appName); + map.put("dependencyList",dependencyList); + return map; + } + + public WriteContentBean buildWriteContentBean(String content,String templateCode){ + return WriteContentBean.builder() + .customCodeElement(true) + .content(content) + .templateName(templateCode).build(); + } + + + public String getModuleCode() { + return moduleCode; + } + + public void setModuleCode(String moduleCode) { + this.moduleCode = moduleCode; + } + + public String getTemplateCode() { + return templateCode; + } + + public void setTemplateCode(String templateCode) { + this.templateCode = templateCode; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getModulePrefix() { + return modulePrefix; + } + + public void setModulePrefix(String modulePrefix) { + this.modulePrefix = modulePrefix; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getArtifactId() { + return artifactId; + } + + public void setArtifactId(String artifactId) { + this.artifactId = artifactId; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public List getDependencyList() { + return dependencyList; + } + + public void setDependencyList(List dependencyList) { + this.dependencyList = dependencyList; + } + + + public void buildModule(String aliasName, String moduleCode){ + this.setModuleName(aliasName+ moduleCode); + this.setModulePrefix(aliasName); + this.setModuleCode(moduleCode.replace("-","")); + } + + public void buildGAV(String groupId, String artifactId, String version){ + this.setGroupId(groupId); + this.setArtifactId(artifactId); + this.setVersion(version); + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ProjectBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ProjectBean.java new file mode 100644 index 0000000..f9c5a9f --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/config/ProjectBean.java @@ -0,0 +1,38 @@ +package com.tianhua.codemaker.bean.config; + +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import lombok.Data; + +import java.util.Map; + +/** + * Description:项目基本配置服务 + * date: 2022/3/9 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Data +public class ProjectBean { + /** + * 全局包名 + */ + private String packageName; + + /** + * 应用名 + */ + private String applicationName; + + /** + * 数据库名 + */ + private String dataBaseName; + + /** + * 业务配置信息 + */ + private Map configFileMap; + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AclElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AclElementBean.java new file mode 100644 index 0000000..d6c9da7 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AclElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 防腐层元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class AclElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AggregateElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AggregateElementBean.java new file mode 100644 index 0000000..04de27e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AggregateElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * 聚合根元素 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class AggregateElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AppListenerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AppListenerElementBean.java new file mode 100644 index 0000000..70f0156 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/AppListenerElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 监听器元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class AppListenerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CacheElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CacheElementBean.java new file mode 100644 index 0000000..dc4ce5a --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CacheElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 缓存服务元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class CacheElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CommandElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CommandElementBean.java new file mode 100644 index 0000000..5490152 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/CommandElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description:命令实体 + * date: 2021/7/5 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class CommandElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainBoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainBoElementBean.java new file mode 100644 index 0000000..c0a2fa5 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainBoElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * 业务模块实体,领域实体元素 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DomainBoElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainEventElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainEventElementBean.java new file mode 100644 index 0000000..cfa5f50 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainEventElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DomainEventElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainMsgBodyElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainMsgBodyElementBean.java new file mode 100644 index 0000000..754102a --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DomainMsgBodyElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/30 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DomainMsgBodyElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperElementBean.java new file mode 100644 index 0000000..f482084 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * + * 动态mapper元素 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DynamicMapperElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java new file mode 100644 index 0000000..b8a63e3 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/DynamicMapperXmlElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * + * 动态mapperxml元素 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DynamicMapperXmlElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ElementBean.java new file mode 100644 index 0000000..4da0d5d --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ElementBean.java @@ -0,0 +1,194 @@ +package com.tianhua.codemaker.bean.dddelement; + +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.plantuml.*; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public abstract class ElementBean { + protected String packageName; + protected List classBeanList; + protected List interfaceBeanList; + protected List enumBeanList; + protected List pomBeanList; + + /** + * 模块名称 + */ + protected String moduleName; + + + /** + * 自定义ftl模板配置bean + */ + protected FtlBean ftlBean; + + + + public FtlBean getFtlBean() { + return ftlBean; + } + + public void setFtlBean(FtlBean ftlBean) { + this.ftlBean = ftlBean; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public List getPomBeanList() { + return pomBeanList; + } + + public void setPomBeanList(List pomBeanList) { + this.pomBeanList = pomBeanList; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public List getClassBeanList() { + return classBeanList; + } + + public void setClassBeanList(List classBeanList) { + this.classBeanList = classBeanList; + } + + public List getInterfaceBeanList() { + return interfaceBeanList; + } + + public void setInterfaceBeanList(List interfaceBeanList) { + this.interfaceBeanList = interfaceBeanList; + } + + public List getEnumBeanList() { + return enumBeanList; + } + + public void setEnumBeanList(List enumBeanList) { + this.enumBeanList = enumBeanList; + } + + + /** + * 动态调用执行之后再次更新代码元素内容 + * @param plantUmlContextBean + * @param elementType + */ + public ElementBean refreshClass(PlantUmlContextBean plantUmlContextBean,String elementType){ + List newClassBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(elementType.contains(",")){ + String [] elementArr = elementType.split(","); + for (String str : elementArr){ + if(v.getClassName().toLowerCase().endsWith(str)){ + newClassBeanList.add(v); + break; + } + } + }else{ + if(v.getClassName().toLowerCase().endsWith(elementType)){ + newClassBeanList.add(v); + } + } + + }); + if(plantUmlContextBean.getDerivedPlantUmlContextBean() != null){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(elementType)){ + newClassBeanList.add(v); + } + }); + } + + + for (ClassBean classBean : newClassBeanList){ + if(!classBean.getClassName().endsWith("Impl")){ + List methodBeanList = new ArrayList<>(); + if(CollectionUtils.isEmpty(classBean.getMethodBeanList())){ + continue; + } + for (MethodBean oldBean : classBean.getMethodBeanList()){ + StringBuilder contentBuilder = new StringBuilder(""); + if(!CollectionUtils.isEmpty(oldBean.getInvokeMethodList())){ + for (String str : oldBean.getInvokeMethodList()){ + contentBuilder.append(" "+str+";\n"); + } + } + methodBeanList.add(oldBean.copySelf(contentBuilder.toString())); + } + classBean.setMethodBeanList(methodBeanList); + continue; + } + String interfaceName = classBean.getClassName().replace("Impl",""); + InterfaceBean interfaceBean = plantUmlContextBean.getInterfaceBeanMap().get(interfaceName); + if(interfaceBean == null){ + interfaceBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().get(interfaceName); + } + if(interfaceBean == null){ + continue; + } + //构建方法内容 + interfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildMethodContent()); + classBean.mergeImportClass(interfaceBean.getImportClassList()); + classBean.mergeImportClass(interfaceBean.getDynamicImportPackageList()); + classBean.setMethodBeanList(interfaceBean.getMethodBeanList()); + classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); + } + + this.setClassBeanList(newClassBeanList); + return this; + } + + /** + * 动态调用执行之后再次更新代码元素内容 + * @param plantUmlContextBean + * @param elementType + */ + public ElementBean refreshInterface(PlantUmlContextBean plantUmlContextBean,String elementType){ + List newInterfaceBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(elementType)){ + v.getMethodBeanList().forEach(methodBean -> methodBean.refreshMethodName()); + newInterfaceBeanList.add(v); + } + }); + if(plantUmlContextBean.getDerivedPlantUmlContextBean() != null){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(elementType)){ + v.getMethodBeanList().forEach(methodBean -> methodBean.refreshMethodName()); + newInterfaceBeanList.add(v); + } + }); + } + + + this.setInterfaceBeanList(newInterfaceBeanList); + return this; + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ExecutorElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ExecutorElementBean.java new file mode 100644 index 0000000..d90d06a --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ExecutorElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/7/5 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ExecutorElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/FactoryElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/FactoryElementBean.java new file mode 100644 index 0000000..1b5cdbc --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/FactoryElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 工厂元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FactoryElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/GatawayElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/GatawayElementBean.java new file mode 100644 index 0000000..13170c4 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/GatawayElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * + * 领域网关元素 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class GatawayElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/InfrastAclElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/InfrastAclElementBean.java new file mode 100644 index 0000000..2fcf092 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/InfrastAclElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 防腐层元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class InfrastAclElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqConsumerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqConsumerElementBean.java new file mode 100644 index 0000000..e76ec01 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqConsumerElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 监听器元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class MqConsumerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqHandlerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqHandlerElementBean.java new file mode 100644 index 0000000..c81c563 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqHandlerElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 监听器元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class MqHandlerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqProducerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqProducerElementBean.java new file mode 100644 index 0000000..2d06737 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/MqProducerElementBean.java @@ -0,0 +1,13 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * 监听器元素 + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class MqProducerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/PackageElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/PackageElementBean.java new file mode 100644 index 0000000..20f3fd0 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/PackageElementBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PackageElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/RepositoryElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/RepositoryElementBean.java new file mode 100644 index 0000000..6279c06 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/RepositoryElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * + * 仓库元素 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class RepositoryElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ServiceElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ServiceElementBean.java new file mode 100644 index 0000000..8dc80cf --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ServiceElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * date: 2021/6/28 + * + * 领域服务元素 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ServiceElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ValueObjectElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ValueObjectElementBean.java new file mode 100644 index 0000000..1a30cb1 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelement/ValueObjectElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelement; + +/** + * Description: + * + * 值对象实体 元素 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ValueObjectElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ControllerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ControllerElementBean.java new file mode 100644 index 0000000..ccc4023 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ControllerElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ControllerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DoBoConvertElementBean.java new file mode 100644 index 0000000..daa7513 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DoBoConvertElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DoBoConvertElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java new file mode 100644 index 0000000..d2c1a51 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/Dto2DtoConvertElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素, + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class Dto2DtoConvertElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java new file mode 100644 index 0000000..d8a52dd --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoBoConvertElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DtoBoConvertElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoElementBean.java new file mode 100644 index 0000000..6d91742 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/DtoElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class DtoElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/EnumElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/EnumElementBean.java new file mode 100644 index 0000000..d456706 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/EnumElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素valueobject.enum派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class EnumElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeElementBean.java new file mode 100644 index 0000000..729561b --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FacadeElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeImplElementBean.java new file mode 100644 index 0000000..d2b367c --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FacadeImplElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FacadeImplElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignControllerElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignControllerElementBean.java new file mode 100644 index 0000000..d5e659c --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignControllerElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FeignControllerElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignElementBean.java new file mode 100644 index 0000000..f34c751 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/FeignElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FeignElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/GatawayImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/GatawayImplElementBean.java new file mode 100644 index 0000000..1f92635 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/GatawayImplElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 由gataway接口派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class GatawayImplElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java new file mode 100644 index 0000000..cb284b0 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/InfrastAclImplElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 由infrastacl接口派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class InfrastAclImplElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/RepositoryImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/RepositoryImplElementBean.java new file mode 100644 index 0000000..07ccecf --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/RepositoryImplElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 由repository接口派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class RepositoryImplElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ServiceImplElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ServiceImplElementBean.java new file mode 100644 index 0000000..2a752a6 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/ServiceImplElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ServiceImplElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoBoConvertElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoBoConvertElementBean.java new file mode 100644 index 0000000..99ff6f7 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoBoConvertElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 派生元素,由领域实体元素bo派生而来 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class VoBoConvertElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoElementBean.java new file mode 100644 index 0000000..f591b4d --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/dddelementderive/VoElementBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.dddelementderive; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2021/7/9 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class VoElementBean extends ElementBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeContextBean.java new file mode 100644 index 0000000..a80b459 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeContextBean.java @@ -0,0 +1,252 @@ +package com.tianhua.codemaker.bean.invoke; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.dynamic.InvokeSceneTypeEnum; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import org.apache.commons.lang3.StringUtils; + + +/** + * Description: 调用时序上下文 + * date: 2021/10/16 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class InvokeContextBean { + /** + * 需要绘制方法内容的方法对象 + * 调用方的方法 + */ + private MethodBean invokerMethodBean; + + /** + * plantuml 调用流程图中的被调用类 + */ + private String providerClassName; + + /** + * plantuml 调用流程图中的被调用方法 + */ + private MethodBean providerClassMethod; + + /** + * plantuml 调用流程图中的调用方法 + */ + private String invokerMethod; + + + /** + * 调用方向 + * 如 应用层->领域层,应用层->基础设施层,应用层->应用层,领域层->领域层 + */ + private String InvokeSceneType; + + /** + * 需要绘制方法内容的方法类型 + */ + private String methodRWType; + + + /** + * 全局对象 + */ + private PlantUmlContextBean plantUmlContextBean; + + /** + * 调用类对象 + */ + private AbstractClassBean invokerClassBean; + + /** + * 被调用类对象 + */ + private AbstractClassBean providerClassBean; + + /** + * 当前调用方调用提供方的调用行内容 + */ + private String currentInvokeRowContent; + + + /** + * 当前调用的调用行bean + */ + private InvokeRowBean currentInvokeRowBean; + + public MethodBean getProviderClassMethod() { + return providerClassMethod; + } + + public void setProviderClassMethod(MethodBean providerClassMethod) { + this.providerClassMethod = providerClassMethod; + } + + public InvokeRowBean getCurrentInvokeRowBean() { + return currentInvokeRowBean; + } + + public void setCurrentInvokeRowBean(InvokeRowBean currentInvokeRowBean) { + this.currentInvokeRowBean = currentInvokeRowBean; + } + + public String getCurrentInvokeRowContent() { + return currentInvokeRowContent; + } + + public void setCurrentInvokeRowContent(String currentInvokeRowContent) { + this.currentInvokeRowContent = currentInvokeRowContent; + } + + public AbstractClassBean getInvokerClassBean() { + return invokerClassBean; + } + + public void setInvokerClassBean(AbstractClassBean invokerClassBean) { + this.invokerClassBean = invokerClassBean; + } + + + public String getInvokeSceneType() { + return InvokeSceneType; + } + + public void setInvokeSceneType(String invokeSceneType) { + InvokeSceneType = invokeSceneType; + } + + public String getMethodRWType() { + return methodRWType; + } + + public void setMethodRWType(String methodRWType) { + this.methodRWType = methodRWType; + } + + public MethodBean getInvokerMethodBean() { + return invokerMethodBean; + } + + public void setInvokerMethodBean(MethodBean invokerMethodBean) { + this.invokerMethodBean = invokerMethodBean; + } + + public String getInvokerMethod() { + return invokerMethod; + } + + public void setInvokerMethod(String invokerMethod) { + this.invokerMethod = invokerMethod; + } + + public String getProviderClassName() { + return providerClassName; + } + + public void setProviderClassName(String providerClassName) { + this.providerClassName = providerClassName; + } + + + public PlantUmlContextBean getPlantUmlContextBean() { + return plantUmlContextBean; + } + + public void setPlantUmlContextBean(PlantUmlContextBean plantUmlContextBean) { + this.plantUmlContextBean = plantUmlContextBean; + } + + /** + * 根据调用者和被调用者以及当前需要绘制的方法构判断调用场景和读写类型 + * + * @param invokeClassName + * @param providerClassName + */ + public void buildInvokeScene(String invokeClassName, String providerClassName) { + String invokeScene = InvokeSceneTypeEnum.getInvokeScene(invokeClassName, providerClassName); + if (StringUtils.isNotEmpty(invokeScene)) { + this.setInvokeSceneType(invokeScene); + } + + if (StringUtils.isNotEmpty(this.getInvokerMethod())) { + String rwType = ReadWriteTypeEnum.getCodeByMethod(this.getInvokerMethod()); + this.setMethodRWType(rwType); + } + } + + /** + * 根据调用内容构建调用场景 + * + * @param invokeContent + */ + public void buildInvokeSceneV2(String invokeContent) { + String invokeSceneStr = invokeContent.split(":")[0].trim(); + + String invokeScene = InvokeSceneTypeEnum.getInvokeSceneV2(invokeSceneStr); + if (StringUtils.isNotEmpty(invokeScene)) { + this.setInvokeSceneType(invokeScene); + } + + if (StringUtils.isNotEmpty(this.getInvokerMethod())) { + String rwType = ReadWriteTypeEnum.getCodeByMethod(this.getInvokerMethod()); + this.setMethodRWType(rwType); + } + } + + + /** + * 构建当前调用行bean + * + * @param currentInvokeRowContent + */ + public void buildCurrentInvokeRow(String currentInvokeRowContent) { + this.setCurrentInvokeRowContent(currentInvokeRowContent); + /** + * 如果有返回值 + */ + InvokeRowBean invokeRowBean = new InvokeRowBean(); + if (currentInvokeRowContent.contains("=")) { + String[] rowContentArr = currentInvokeRowContent.split("="); + String returnBody = rowContentArr[0]; + invokeRowBean.setReturnClassName(returnBody.trim().split(" ")[0].trim()); + invokeRowBean.setReturnClassValue(returnBody.trim().split(" ")[1].trim()); + } + String classNameVar = this.getProviderClassName().substring(0,1).toLowerCase()+ this.getProviderClassName().substring(1); + invokeRowBean.setProviderClassNameVar(classNameVar); + + invokeRowBean.setProviderClassName(this.getProviderClassName()); + invokeRowBean.setProviderMethodName(this.getProviderClassMethod().getSimplMethodName()); + invokeRowBean.setReturnClassName(this.getProviderClassMethod().getReturnClass()); + this.getProviderClassMethod().buildParamArr(); + invokeRowBean.setProviderMethodParamTypeArr(this.getProviderClassMethod().getParamArr()); + invokeRowBean.buildParamValueArr(); + + this.setCurrentInvokeRowBean(invokeRowBean); + } + + @Override + public String toString() { + return "InvokeContextBean{" + + "invokerMethodBean=" + invokerMethodBean + + ", providerClassName='" + providerClassName + '\'' + + ", invokerMethod='" + invokerMethod + '\'' + + ", InvokeSceneType='" + InvokeSceneType + '\'' + + ", methodRWType='" + methodRWType + '\'' + + ", invokerClassBean=" + invokerClassBean + + ", currentInvokeRowContent='" + currentInvokeRowContent + '\'' + + ", currentInvokeRowBean=" + currentInvokeRowBean + + '}'; + } + + + public AbstractClassBean getProviderClassBean() { + return providerClassBean; + } + + public void setProviderClassBean(AbstractClassBean providerClassBean) { + this.providerClassBean = providerClassBean; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeRowBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeRowBean.java new file mode 100644 index 0000000..a202b0a --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/invoke/InvokeRowBean.java @@ -0,0 +1,212 @@ +package com.tianhua.codemaker.bean.invoke; + +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import org.apache.commons.lang3.StringUtils; + +import java.util.Objects; + +/** + * Description:动态绘制的调用代码行 + * date: 2021/10/21 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class InvokeRowBean { + /** + * 被调用方的类名 + */ + private String providerClassName; + + /** + * 被调用方的类名对应的变量名 + */ + private String providerClassNameVar; + /** + * 被调用方的方法名 + */ + private String providerMethodName; + + /** + * 被调用方的方法参数value值 + * 如:null,xxxBo + */ + private String [] providerMethodParamValueArr; + + /** + * 被调用方的方法参数类型 + * 如:XXXBO xxxBo + */ + private String [] providerMethodParamTypeArr; + + /** + * 被调用方的方法返回值类型 + */ + private String returnClassName; + + /** + * 被调用方的方法返回值 + */ + private String returnClassValue; + + public String getProviderClassName() { + return providerClassName; + } + + public void setProviderClassName(String providerClassName) { + this.providerClassName = providerClassName; + } + + public String getProviderMethodName() { + return providerMethodName; + } + + public void setProviderMethodName(String providerMethodName) { + this.providerMethodName = providerMethodName; + } + + public String[] getProviderMethodParamValueArr() { + return providerMethodParamValueArr; + } + + public void setProviderMethodParamValueArr(String[] providerMethodParamValueArr) { + this.providerMethodParamValueArr = providerMethodParamValueArr; + } + + public String[] getProviderMethodParamTypeArr() { + return providerMethodParamTypeArr; + } + + public void setProviderMethodParamTypeArr(String[] providerMethodParamTypeArr) { + this.providerMethodParamTypeArr = providerMethodParamTypeArr; + } + + public String getReturnClassName() { + return returnClassName; + } + + public void setReturnClassName(String returnClassName) { + this.returnClassName = returnClassName; + } + + public String getReturnClassValue() { + return returnClassValue; + } + + public void setReturnClassValue(String returnClassValue) { + this.returnClassValue = returnClassValue; + } + + + public String getProviderClassNameVar() { + return providerClassNameVar; + } + + public void setProviderClassNameVar(String providerClassNameVar) { + this.providerClassNameVar = providerClassNameVar; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + InvokeRowBean that = (InvokeRowBean) o; + return Objects.equals(providerClassName, that.providerClassName) && + Objects.equals(providerMethodName, that.providerMethodName) && + Objects.equals(returnClassName, that.returnClassName); + } + + @Override + public int hashCode() { + return Objects.hash(providerClassName, providerMethodName, returnClassName); + } + + + /** + * 转换成字符串调用行 + * @return + */ + public String buildInvokeContent(){ + StringBuilder builder = new StringBuilder(); + if(!StringUtils.isEmpty(this.getReturnClassName()) && StringUtils.isNotEmpty(this.getReturnClassValue())){ + builder.append(this.getReturnClassName()+" "); + builder.append(this.getReturnClassValue()+" = "); + } + builder.append(this.getProviderClassNameVar()+"."); + builder.append(this.getProviderMethodName()); + if(this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0){ + builder.append("()"); + return builder.toString(); + } + builder.append("("); + + for (String paramValue : this.getProviderMethodParamValueArr()){ + builder.append(paramValue+", "); + } + return builder.substring(0,builder.length() - 2)+")"; + } + + /** + * 根据依赖的代码行内容,完善本身的代码行内容 + * + * 这里主要是完善本身的方法入参内容,将上一行调用内容的变量类和变量名应用到当前行 + * @param invokeRowBean + * @return + */ + public String refreshInvokeContent(InvokeRowBean invokeRowBean, PlantUmlContextBean plantUmlContextBean){ + String preRowClassName = invokeRowBean.getReturnClassName(); + if(preRowClassName.contains(".")){ + String [] arr = preRowClassName.split("\\."); + preRowClassName = arr[arr.length - 1].replace(">",""); + } + if (StringUtils.isEmpty(preRowClassName) || this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0) { + return buildInvokeContent(); + } + + for (int i = 0;i < this.getProviderMethodParamTypeArr().length;i++){ + String currentRowClassName = this.getProviderMethodParamTypeArr()[i]; + String currentRowClassNameType = currentRowClassName; + String currentRowClassNameTypeVar = currentRowClassName; + if(currentRowClassNameType.contains(" ")){ + currentRowClassNameType = currentRowClassName.split(" ")[0]; + currentRowClassNameTypeVar = currentRowClassName.split(" ")[1]; + } + //通过类型推导 + if(preRowClassName.equals(currentRowClassNameType)){ + this.getProviderMethodParamValueArr()[i] = invokeRowBean.getReturnClassValue(); + }else { + //通过变量名推导,当前调用行的参数名与上一行的返回值是否存在has a关系,如getBySystemName(String systemName),上一行的返回值刚好是SystemBO + ClassBean classBean = plantUmlContextBean.getClassBeanMap().get(preRowClassName); + if(classBean == null){ + continue; + } + for (FieldBean fieldBean : classBean.getFieldBeanList()){ + String fieldName = fieldBean.getFieldName(); + String fieldNameVar = fieldName; + String fieldNameType = fieldName; + + if (fieldName.contains(" ")){ + fieldNameVar = fieldName.split(" ")[1]; + fieldNameType = fieldName.split(" ")[0]; + } + if(fieldNameVar.equals(currentRowClassNameTypeVar) && fieldNameType.equals(currentRowClassNameType)){ + this.getProviderMethodParamValueArr()[i] = invokeRowBean.getReturnClassValue()+"."+fieldBean.buildGetterMethodName(); + } + } + } + } + + return buildInvokeContent(); + } + + + public void buildParamValueArr(){ + if(this.getProviderMethodParamTypeArr() == null || this.getProviderMethodParamTypeArr().length == 0){ + return; + } + this.setProviderMethodParamValueArr(new String[this.getProviderMethodParamTypeArr().length]); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AbstractClassBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AbstractClassBean.java new file mode 100644 index 0000000..e410a9a --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AbstractClassBean.java @@ -0,0 +1,748 @@ +package com.tianhua.codemaker.bean.plantuml; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.bean.segment.SegmentBean; +import com.tianhua.codemaker.enums.CompTypeEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; + +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; + + +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +/** + * Description: + * 抽象plantuml 类 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public abstract class AbstractClassBean { + + /** + * 类或者接口的范型信息 + */ + private PatternBean patternBean; + /** + * 类名 + */ + protected String className; + + /** + * 所在包 + */ + protected String packageName; + /** + * 所属模块 + */ + protected String belongModel; + + /** + * 类描述 + */ + protected String classDesc; + + /** + * 方法 + */ + private List methodBeanList; + + + /** + * 父类方法列表 + */ + private List superMethodBeanList; + + /** + * 父类属性列表 + * + */ + private List superFieldBeanList; + + /** + * 需要引入的class包名 + */ + private List importClassList; + /** + * 属性列表 + * + */ + private List fieldBeanList; + + + + /** + * 实现接口 + */ + private InterfaceBean implInterfaceBean; + + /** + * 继承类列表 + */ + private String relationClassStr; + /** + * 项目作者 + */ + private String author; + + /** + * 所在plantUML的包名 + */ + private String plantUMLPackage; + + /** + * 是否是派生类 + */ + private boolean isDerived; + + /** + * 组件名称 + * 根据该标示判断是否是plantUML类图中的还是组件扫描引入的 + */ + private String compName; + + + //类所属组件类型,默认为spring,即plantUML类图中发起调用的类都是spring类型 + //这里当然还有其他类型,如xxbo.xxxMethod(),这里需要进行特殊识别 + private String compType = CompTypeEnum.SPRING.getCompTag(); + + + private String bodtoConvertInterface; + + private String bodoConvertInterface; + + private String bovoConvertInterface; + + /** + * 在动态调用中产生的引用包 + */ + private List dynamicImportPackageList = new ArrayList<>(); + + + private List thisClassImportPackageList = new ArrayList<>(); + + /** + * 子类需要导入的包 + */ + private List childClassImportPackageList = new ArrayList<>(); + + + + /** + * 派生类链路 + * 如bo派生dto + * dto的派生链路里就有boclass + * 用来记录派生过程中的关联关系 + */ + private List derivedChainClassList; + + /** + * bo上的扩展属性对象 + */ + private ExtendFieldBean extendFieldBean = new ExtendFieldBean(); + + /** + * 对应的tableBean mapper对象使用 + */ + private TableBean tableBean; + + /** + * 对应的columnBeanList mapper对象使用 + */ + private List columnBeanList; + + /** + * 类上的注释 + */ + private String annotation; + + /** + * 所属上下文 + */ + private String context = ""; + + /** + * plantUML的扩展注解标示 + */ + private List annotationTagList; + + /** + * 代码片段列表 + */ + private List codeSegmentBeanList = new ArrayList<>(); + + + public PatternBean getPatternBean() { + return patternBean; + } + + public void setPatternBean(PatternBean patternBean) { + this.patternBean = patternBean; + } + + public List getSuperMethodBeanList() { + return superMethodBeanList; + } + + public void setSuperMethodBeanList(List superMethodBeanList) { + this.superMethodBeanList = superMethodBeanList; + } + + public List getSuperFieldBeanList() { + return superFieldBeanList; + } + + public void setSuperFieldBeanList(List superFieldBeanList) { + this.superFieldBeanList = superFieldBeanList; + } + + public List getCodeSegmentBeanList() { + return codeSegmentBeanList; + } + + public List getAnnotationTagList() { + return annotationTagList; + } + + public void setAnnotationTagList(List annotationTagList) { + this.annotationTagList = annotationTagList; + } + + public String getCompName() { + return compName; + } + + public void setCompName(String compName) { + this.compName = compName; + } + + public String getCompType() { + return compType; + } + + public void setCompType(String compType) { + this.compType = compType; + } + + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public String getAnnotation() { + return annotation; + } + + public void setAnnotation(String annotation) { + this.annotation = annotation; + } + + public TableBean getTableBean() { + return tableBean; + } + + public void setTableBean(TableBean tableBean) { + this.tableBean = tableBean; + } + + public List getColumnBeanList() { + return columnBeanList; + } + + public void setColumnBeanList(List columnBeanList) { + this.columnBeanList = columnBeanList; + } + + public ExtendFieldBean getExtendFieldBean() { + return extendFieldBean; + } + + public void setExtendFieldBean(ExtendFieldBean extendFieldBean) { + this.extendFieldBean = extendFieldBean; + } + + public List getDerivedChainClassList() { + return derivedChainClassList; + } + + public void setDerivedChainClassList(List derivedChainClassList) { + this.derivedChainClassList = derivedChainClassList; + } + + public List getDynamicImportPackageList() { + return dynamicImportPackageList; + } + + + public String getBodtoConvertInterface() { + return bodtoConvertInterface; + } + + public void setBodtoConvertInterface(String bodtoConvertInterface) { + this.bodtoConvertInterface = bodtoConvertInterface; + } + + public String getBodoConvertInterface() { + return bodoConvertInterface; + } + + public void setBodoConvertInterface(String bodoConvertInterface) { + this.bodoConvertInterface = bodoConvertInterface; + } + + public String getBovoConvertInterface() { + return bovoConvertInterface; + } + + public void setBovoConvertInterface(String bovoConvertInterface) { + this.bovoConvertInterface = bovoConvertInterface; + } + + public boolean isDerived() { + return isDerived; + } + + public void setDerived(boolean derived) { + isDerived = derived; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + + public String getPlantUMLPackage() { + + return plantUMLPackage; + } + + public void setPlantUMLPackage(String plantUMLPackage) { + this.plantUMLPackage = plantUMLPackage; + } + + public String getRelationClassStr() { + return relationClassStr; + } + + public void setRelationClassStr(String relationClassStr) { + this.relationClassStr = relationClassStr; + } + + public InterfaceBean getImplInterfaceBean() { + return implInterfaceBean; + } + + public void setImplInterfaceBean(InterfaceBean implInterfaceBean) { + this.implInterfaceBean = implInterfaceBean; + } + + + public List getMethodBeanList() { + return methodBeanList; + } + + public void setMethodBeanList(List methodBeanList) { + this.methodBeanList = methodBeanList; + } + + public List getFieldBeanList() { + return fieldBeanList; + } + + public void setFieldBeanList(List fieldBeanList) { + this.fieldBeanList = fieldBeanList; + } + + public List getImportClassList() { + return importClassList; + } + + public void setImportClassList(List importClassList) { + this.importClassList = importClassList; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getBelongModel() { + return belongModel; + } + + public void setBelongModel(String belongModel) { + this.belongModel = belongModel; + } + + public String getClassDesc() { + return classDesc; + } + + public void setClassDesc(String classDesc) { + this.classDesc = classDesc; + } + + + public List getThisClassImportPackageList() { + return thisClassImportPackageList; + } + + public void setThisClassImportPackageList(List thisClassImportPackageList) { + this.thisClassImportPackageList = thisClassImportPackageList; + } + + public List getChildClassImportPackageList() { + return childClassImportPackageList; + } + + public void setChildClassImportPackageList(List childClassImportPackageList) { + this.childClassImportPackageList = childClassImportPackageList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AbstractClassBean that = (AbstractClassBean) o; + return Objects.equals(className, that.className) && + Objects.equals(packageName, that.packageName); + } + + @Override + public int hashCode() { + return Objects.hash(className, packageName); + } + + + public void buildPlantUMLPackage(String plantUMLPackage){ + if(plantUMLPackage.contains("\"")){ + String content = plantUMLPackage.split("\"")[1]; + if(content.contains("-")){ + String [] arr = content.split("-"); + if(arr[1].contains(".")){ + this.setPlantUMLPackage(arr[1].trim()); + return; + } + if(arr[0].contains(".")){ + this.setPlantUMLPackage(arr[0].trim()); + return; + } + + } + } + + this.setPlantUMLPackage(plantUMLPackage.trim().trim()); + } + + /** + * 合并引用包, + * 接口的引用包与实现的引用包合并 + * @param importClassList + */ + public void mergeImportClass(List importClassList){ + if(CollectionUtils.isEmpty(importClassList)){ + return; + } + if(CollectionUtils.isEmpty(this.getImportClassList())){ + this.setImportClassList(importClassList); + }else { + Set newHashSet = Sets.newHashSet(importClassList); + for (String importClassName : this.getImportClassList()){ + newHashSet.remove(importClassName); + } + this.getImportClassList().addAll(Lists.newArrayList(newHashSet)); + } + } + /** + * 构建简化版的field,去除扩展字段属性内容,对dto,vo屏蔽bo属性之间的关联关系,但是bo本身保留 + * @return + */ + public List buildSimpleFieldList(){ + + List fieldBeanList = new ArrayList<>(); + if(CollectionUtils.isEmpty(this.getFieldBeanList())){ + return fieldBeanList; + } + for (FieldBean oldBean : this.getFieldBeanList()){ + fieldBeanList.add(oldBean.copySelf()); + } + + //dto没有bo那么多的丰富信息,需要去掉 + List newFieldBeanList = fieldBeanList.stream().filter(fieldBean -> + !fieldBean.getFieldName().trim().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) + && fieldBean.isSimpleField() + && !fieldBean.getFieldName().trim().toLowerCase().contains(DomainElementEnum.BO.getElement()+">")) + .collect(Collectors.toList()); + + List fieldBeanFilterList = fieldBeanList.stream().filter(fieldBean -> + fieldBean.getFieldName().trim().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) + && fieldBean.isSimpleField() + || fieldBean.getFieldName().trim().toLowerCase().contains(DomainElementEnum.BO.getElement()+">")) + .collect(Collectors.toList()); + + fieldBeanFilterList.forEach(fieldBean -> { + fieldBean.setVisibility("/** "+fieldBean.getVisibility()); + fieldBean.setFieldName(fieldBean.getFieldName()+" **/"); + }); + + newFieldBeanList.addAll(fieldBeanFilterList); + return newFieldBeanList; + } + + + /** + * 在动态调用过程中匹配出调用者的调用方法和提供者的提供方法 + * 兼容写法 + * xxx.methodName invoke yyy.methodName + * xxx.method(2) invoke yyy.method(3) + * xxx.method(XxxBO, XxxEvent) invoke yyy.method(YyyDTO, YyyCmd) + * xxx.method(XxxBO xxxBO, XxxEvent xxxEvent) invoke yyy.method(YyyDTO yyyDTO, YyyCmd yyyCmd) + * @param currentMethod + * @return + */ + public Optional getMatchMethodBean(String currentMethod){ + + //如果没有方法参数则直接匹配 + if(!currentMethod.contains("(")){ + return this.getMethodBeanList().stream().filter(methodBean1 -> methodBean1.getMethodName().toLowerCase().startsWith(currentMethod.toLowerCase()+"(")).findFirst(); + } + + String methodName = currentMethod.split("\\(")[0]; + String currentMethodTag = currentMethod+"("; + String paramCountStr = currentMethod.replace(methodName,"").trim(); + //判断是否是xxx.method(2)这种写法 + int count = 0; + if(paramCountStr.length() == 3){ + String paramCount = paramCountStr.replace("(","").replace(")",""); + count = Integer.parseInt(paramCount); + } + + //方法名一样,参数数量不同 + if(count > 0){ + int finalCount = count; + return this.getMethodBeanList().stream() + .filter(methodBean1 -> methodBean1.getMethodName().toLowerCase().startsWith(currentMethodTag) + && methodBean1.getParamArr().length == finalCount + ) + .findFirst(); + } + + + //通过参数类型进行匹配 + String [] currentParamArr = currentMethod.split("\\(")[1].split(","); + + AtomicReference matchResultBean = new AtomicReference<>(); + this.getMethodBeanList().stream().forEach( + methodBean -> { + if(methodBean.getMethodName().toLowerCase().startsWith(currentMethodTag)){ + String [] paramArr = methodBean.getParamArr(); + for (int i = 0;i < paramArr.length;i ++){ + for (int j = 0;j < currentParamArr.length;j ++){ + String currentParamType = currentParamArr[j].trim().split(" ")[0]; + String paramType = paramArr[i].trim().split(" ")[0]; + if(currentParamType.equals(paramType.toLowerCase())){ + matchResultBean.set(methodBean); + } + } + } + } + } + ); + if(matchResultBean.get() == null){ + return Optional.empty(); + } + + return Optional.of(matchResultBean.get()); + } + + + /** + * 如果匹配不到,则将plantUML调用时序图中的方法注册到当前类中,做动态扩展 + * @param currentMethod + * @return + */ + public MethodBean getOrAddMethodBean(String currentMethod){ + Optional methodBeanOptional = getMatchMethodBean(currentMethod); + if(methodBeanOptional.isPresent()){ + return methodBeanOptional.get(); + } + if(!currentMethod.contains("(")){ + currentMethod = currentMethod +"()"; + } + + MethodBean methodBean = new MethodBean(); + methodBean.setDesc(""); + methodBean.setMethodName(currentMethod); + methodBean.buildParamArr(); + methodBean.setReturnClass("void"); + methodBean.setVisibility("public"); + this.getMethodBeanList().add(methodBean); + return methodBean; + } + + + /** + * 根据调用时序的调用内容判断调用方和被调用方是不是当前类 + * @param contentArr + * @return + */ + public boolean checkMatchClass(String [] contentArr){ + for (String content : contentArr){ + if(content.trim().toLowerCase().endsWith(this.getClassName().toLowerCase())){ + return true; + } + } + return false; + } + + /** + * 将classBean转换为WrteContentBean为后续的写文件做准备 + * @param content + * @param templateFileEnum + * @return + */ + public WriteContentBean buildWriteContentBean(String content, TemplateFileEnum templateFileEnum){ + return WriteContentBean.builder().content(content) + .templateName(templateFileEnum.getTempFileName()) + .humpClassName(this.getClassName()) + .classPackageName(this.getPackageName()) + .build(); + } + + + /** + * 将classBean转换为WrteContentBean为后续的写文件做准备 + * @param content + * @param templateFileCode + * @return + */ + public WriteContentBean buildWriteContentBeanV2(String content, String templateFileCode, boolean custom){ + return WriteContentBean.builder().content(content) + .templateName(templateFileCode) + .customCodeElement(custom) + .humpClassName(this.getClassName()) + .classPackageName(this.getPackageName()) + .build(); + } + + + /** + * 由当前对象派生到新对象 + * @param className + * @param plantUMLPackage + * @param fieldBeanList + * @return + */ + public ClassBean derivedNewClassBean(String className,String plantUMLPackage,List fieldBeanList){ + ClassBean modelClassBean = new ClassBean(); + modelClassBean.setClassName(className); + modelClassBean.setFieldBeanList(fieldBeanList); + modelClassBean.setClassDesc(this.getClassDesc()); + modelClassBean.setContext(this.getContext()); + modelClassBean.setMethodBeanList(Lists.newArrayList()); + modelClassBean.setPlantUMLPackage(plantUMLPackage); + modelClassBean.setDerivedChainClassList(Lists.newArrayList(this.getClassName())); + return modelClassBean; + } + + /** + * 给方法增加导入类 + * @param classPackageName + */ + public void addImportClass(String classPackageName){ + if(CollectionUtils.isEmpty(this.getImportClassList())){ + this.setImportClassList(Lists.newArrayList(classPackageName)); + return; + } + if(!this.getImportClassList().contains(classPackageName)){ + this.getImportClassList().add(classPackageName); + } + } + + /** + * 给方法增加导入类 + * @param importClassList + */ + public void addImportClassBatch(List importClassList){ + if(CollectionUtils.isEmpty(importClassList)){ + return; + } + importClassList.stream().forEach(this::addImportClass); + } + + public void addDynamicImportClass(String packageName){ + if(this.getDynamicImportPackageList().contains(packageName)){ + return; + } + this.getDynamicImportPackageList().add(packageName); + } + + + public void addThisImportClass(String packageName){ + if(this.getThisClassImportPackageList().contains(packageName)){ + return; + } + this.getThisClassImportPackageList().add(packageName); + } + + + public void addChildImportClass(String packageName){ + if(this.getChildClassImportPackageList().contains(packageName)){ + return; + } + this.getChildClassImportPackageList().add(packageName); + } + + + + /** + * 为class增加fieldBean,根据名称判断是否存在,已存在则忽略 + * @param fieldBean + */ + public void addField(FieldBean fieldBean){ + if (CollectionUtils.isEmpty(this.getFieldBeanList())){ + this.setFieldBeanList(new ArrayList<>()); + } + Optional fieldBeanOptional = this.getFieldBeanList().stream().filter(fieldBean1 -> fieldBean1.getSimpleName().equals(fieldBean.getSimpleName())).findFirst(); + if(fieldBeanOptional.isPresent()){ + return; + } + this.getFieldBeanList().add(fieldBean); + } + + /** + * 增加代码段 + * @param segmentBean + */ + public void addCodeSegment(SegmentBean segmentBean){ + this.codeSegmentBeanList.add(segmentBean); + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AnnotationBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AnnotationBean.java new file mode 100644 index 0000000..047c1f1 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/AnnotationBean.java @@ -0,0 +1,12 @@ +package com.tianhua.codemaker.bean.plantuml; + +/** + * Description:枚举模型 + * date: 2021/11/23 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class AnnotationBean extends AbstractClassBean { +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ClassBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ClassBean.java new file mode 100644 index 0000000..95d8f32 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ClassBean.java @@ -0,0 +1,34 @@ +package com.tianhua.codemaker.bean.plantuml; + +import org.apache.commons.collections4.CollectionUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description: + * class 类信息 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ClassBean extends AbstractClassBean { + + public Map buildVarMap(){ + Map varMap = new HashMap<>(); + varMap.put("class",this); + varMap.put("table",this.getTableBean()); + varMap.put("columns",this.getColumnBeanList()); + varMap.put("fields",this.getFieldBeanList()); + if(CollectionUtils.isNotEmpty(this.getMethodBeanList())){ + this.getMethodBeanList().stream().forEach(methodBean -> methodBean.getSimplMethodName()); + } + + varMap.put("methods",this.getMethodBeanList()); + varMap.put("imports",this.getImportClassList()); + + return varMap; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/EnumBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/EnumBean.java new file mode 100644 index 0000000..9ffc42f --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/EnumBean.java @@ -0,0 +1,82 @@ +package com.tianhua.codemaker.bean.plantuml; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description: 枚举类 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class EnumBean extends AbstractClassBean { + + /** + * 枚举值 + */ + private List enumValueList; + + + /** + * 构造方法参数 + */ + private String constructParamStr; + /** + * 构造方法体初始化设置 + */ + private List constructMethodBodyList; + + public String getConstructParamStr() { + return constructParamStr; + } + + public void setConstructParamStr(String constructParamStr) { + this.constructParamStr = constructParamStr; + } + + public List getConstructMethodBodyList() { + return constructMethodBodyList; + } + + public void setConstructMethodBodyList(List constructMethodBodyList) { + this.constructMethodBodyList = constructMethodBodyList; + } + + public List getEnumValueList() { + return enumValueList; + } + + public void setEnumValueList(List enumValueList) { + this.enumValueList = enumValueList; + } + + + public Map buildVarMap(){ + Map varMap = new HashMap<>(); + varMap.put("class",this); + varMap.put("fields",this.getFieldBeanList()); + varMap.put("methods",this.getMethodBeanList()); + varMap.put("enums",this.getEnumValueList()); + varMap.put("methods",this.getMethodBeanList()); + varMap.put("bodys",this.getConstructMethodBodyList()); + return varMap; + } + public EnumBean copySelf(){ + EnumBean enumBean = new EnumBean(); + enumBean.setFieldBeanList(this.getFieldBeanList()); + enumBean.setPlantUMLPackage(this.getPlantUMLPackage()); + enumBean.setAuthor(this.getAuthor()); + enumBean.setEnumValueList(this.getEnumValueList()); + enumBean.setConstructMethodBodyList(this.getConstructMethodBodyList()); + enumBean.setClassDesc(this.getClassDesc()); + enumBean.setClassName(this.getClassName()); + enumBean.setMethodBeanList(this.getMethodBeanList()); + enumBean.setImportClassList(this.getImportClassList()); + enumBean.setConstructParamStr(this.getConstructParamStr()); + enumBean.setPackageName(this.getPackageName()); + return enumBean; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ExtendFieldBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ExtendFieldBean.java new file mode 100644 index 0000000..6aff42f --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ExtendFieldBean.java @@ -0,0 +1,126 @@ +package com.tianhua.codemaker.bean.plantuml; + +/** + * Description:从plantUMl中解析出的扩展属性上下文 + * date: 2021/10/21 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ExtendFieldBean { + /** + * 需要解析的调用时序图文件列表 + */ + private String[] invokeFileKey; + /** + * bo对应的表名称 + */ + private String tableKey; + /** + * bo对应的facade接口名称列表 + */ + private String[] facadeKey; + /** + * bo对应的controller接口名称列表 + */ + private String[] controllerKey; + /** + * bo对应的dto对象列表 + */ + private String[] dtoKeyList; + + /** + * bo对应的vo对象列表 + */ + private String[] voKeyList; + + /** + * bo对应的校验对象列表 + */ + private String [] validateKeyList; + + public String[] getValidateKeyList() { + return validateKeyList; + } + + public void setValidateKeyList(String[] validateKeyList) { + this.validateKeyList = validateKeyList; + } + + public String[] getInvokeFileKey() { + return invokeFileKey; + } + + public void setInvokeFileKey(String[] invokeFileKey) { + this.invokeFileKey = invokeFileKey; + } + + public String getTableKey() { + return tableKey; + } + + public void setTableKey(String tableKey) { + this.tableKey = tableKey; + } + + public String[] getFacadeKey() { + return facadeKey; + } + + public void setFacadeKey(String[] facadeKey) { + this.facadeKey = facadeKey; + } + + public String[] getControllerKey() { + return controllerKey; + } + + public void setControllerKey(String[] controllerKey) { + this.controllerKey = controllerKey; + } + + public String[] getDtoKeyList() { + return dtoKeyList; + } + + public void setDtoKeyList(String[] dtoKeyList) { + this.dtoKeyList = dtoKeyList; + } + + public String[] getVoKeyList() { + return voKeyList; + } + + public void setVoKeyList(String[] voKeyList) { + this.voKeyList = voKeyList; + } + + public void buildTableKey(String tableKey){ + this.setTableKey(tableKey.replace("String","").replace("string","").trim()); + } + + public void buildDtoKeyArr(String dtoKey){ + this.setDtoKeyList(dtoKey.replace("String","").replace("string","").trim().split(",")); + } + + public void buildFacadeKeyArr(String facadeKey){ + this.setFacadeKey(facadeKey.replace("String","").replace("string","").trim().split(",")); + } + + public void buildVoKeyArr(String voKeyList){ + this.setVoKeyList(voKeyList.replace("String","").replace("string","").trim().split(",")); + } + + public void buildControllerKeyArr(String controllerKeyList){ + this.setControllerKey(controllerKeyList.replace("String","").replace("string","").trim().split(",")); + } + + public void buildInvokeFileKeyArr(String invokeFileKey){ + this.setInvokeFileKey(invokeFileKey.replace("String","").replace("string","").trim().split(",")); + } + + public void buildValidteKeyArr(String invokeFileKey){ + this.setValidateKeyList(invokeFileKey.replace("String","").replace("string","").trim().split(",")); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/FieldBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/FieldBean.java new file mode 100644 index 0000000..7981ab3 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/FieldBean.java @@ -0,0 +1,377 @@ +package com.tianhua.codemaker.bean.plantuml; + +import com.alibaba.fastjson.annotation.JSONField; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.enums.VisibilityEnum; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class FieldBean { + /** + * 属性名称 + */ + private String fieldName; + /** + * 访问权限 + */ + private String visibility; + + /** + * 属性描述 + */ + private String desc; + + /** + * do对应class下的数据库表字段名 + */ + private String dbColumnName; + + + /** + * 属性类型 + */ + private String fieldType; + + /** + * 属性简单名称 + */ + private String fieldSimpleName; + + /** + * 注解 + */ + private String annotation; + + /** + * plantUMl类图的原始数据 + */ + private String originFieldStr; + + /** + * vo/dto/do等模型属性上的扩展注解标示 + */ + private List annotationTagList = new ArrayList<>(); + + public List getAnnotationTagList() { + return annotationTagList; + } + + public void setAnnotationTagList(List annotationTagList) { + this.annotationTagList = annotationTagList; + } + + public String getOriginFieldStr() { + return originFieldStr; + } + + public void setOriginFieldStr(String originFieldStr) { + this.originFieldStr = originFieldStr; + } + + public String getAnnotation() { + return annotation; + } + + public void setAnnotation(String annotation) { + this.annotation = annotation; + } + + public String getFieldType() { + return fieldType; + } + + public void setFieldType(String fieldType) { + this.fieldType = fieldType; + } + + public String getFieldSimpleName() { + return fieldSimpleName; + } + + public void setFieldSimpleName(String fieldSimpleName) { + this.fieldSimpleName = fieldSimpleName; + } + + public FieldBean(){ + + } + + public FieldBean(String fieldName,String desc,String dbColumnName ){ + this(fieldName,desc,dbColumnName, VisibilityEnum.PRIVATE.getVisibility()); + } + + public FieldBean(String fieldName,String desc,String dbColumnName,String visibility ){ + this.fieldName = fieldName; + this.desc = desc; + this.dbColumnName = dbColumnName; + this.visibility = visibility; + } + + public String getDbColumnName() { + return dbColumnName; + } + + public void setDbColumnName(String dbColumnName) { + this.dbColumnName = dbColumnName; + } + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public String getVisibility() { + return visibility; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + /** + * 是否关联具体数据表 + * @return + */ + @JSONField(serialize = false) + public boolean isTableKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.TABLE_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.TABLE_KEY); + } + + /** + * 是否需要派生dto + * @return + */ + @JSONField(serialize = false) + public boolean isDtoKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.DTO_KEY_LIST) + || this.fieldName.toLowerCase().contains(GlobalConstant.DTO_KEY_LIST); + } + + /** + * 是否需要派生dto + * @return + */ + @JSONField(serialize = false) + public boolean isFacadeKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.FACADE_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.FACADE_KEY); + } + + @JSONField(serialize = false) + public boolean isVoKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.VO_KEY_LIST) + || this.fieldName.toLowerCase().contains(GlobalConstant.VO_KEY_LIST); + } + + @JSONField(serialize = false) + public boolean isControllerKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.CONTROLLER_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.CONTROLLER_KEY); + } + + @JSONField(serialize = false) + public boolean isCopyToRpcClientKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.COPY2RPC_CLIENT_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.COPY2RPC_CLIENT_KEY); + } + + @JSONField(serialize = false) + public boolean isInvokeFileKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.INVOKE_FILE_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.INVOKE_FILE_KEY); + } + + + @JSONField(serialize = false) + public boolean isContextKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.CONTEXT_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.CONTEXT_KEY); + } + + @JSONField(serialize = false) + public boolean isQueryDtoKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.QUERY_DTO_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.QUERY_DTO_KEY); + } + + @JSONField(serialize = false) + public boolean isQueryVoKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.QUERY_VO_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.QUERY_VO_KEY); + } + + @JSONField(serialize = false) + public boolean isExportAclKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY); + } + + @JSONField(serialize = false) + public boolean isValidateKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.VALIDATE_KEY) + || this.fieldName.toLowerCase().contains(GlobalConstant.VALIDATE_KEY); + } + + /** + * 根据条件判断是否是简单类型--非扩展字段信息判断 + * @return + */ + @JSONField(serialize = false) + public boolean isSimpleField(){ + return !this.isTableKey() + && !this.isDtoKey() + && !this.isFacadeKey() + && !this.isVoKey() + && !this.isControllerKey() + && !this.isInvokeFileKey() + && !this.isContextKey() + && !this.isQueryVoKey() + && !this.isQueryDtoKey() + && !this.isExportAclKey() + && !this.isValidateKey() + && !this.isMethod(); + } + + + /** + * 构建属性注释 + * @param desc + */ + public void buildDesc(String desc){ + if(desc.startsWith(VisibilityEnum.PUBLIC.getTag()) + || desc.startsWith(VisibilityEnum.PRIVATE.getTag()) + || desc.startsWith(VisibilityEnum.PROTECT.getTag())){ + String newDesc = desc.substring(1,desc.length()-1); + this.setDesc(newDesc); + }else { + this.setDesc(desc); + } + } + + + public FieldBean copySelf(){ + FieldBean fieldBean = new FieldBean(); + fieldBean.setFieldName(this.getFieldName()); + fieldBean.setVisibility(this.getVisibility()); + fieldBean.setDesc(this.getDesc()); + return fieldBean; + } + + + /** + * 构建属性的getter方法名 + * @return + */ + public String buildGetterMethodName(){ + String simpleFieldName = this.getFieldName(); + if(fieldName.contains(" ")){ + simpleFieldName = fieldName.split(" ")[1]; + } + String prefix = "get"; + //判断是否是boolean类型 + if(this.getFieldName().toLowerCase().contains("boolean")){ + prefix = "is"; + } + return prefix+simpleFieldName.substring(0,1).toUpperCase()+simpleFieldName.substring(1)+"()"; + } + + public void buildFieldDetail(){ + if(this.getFieldName().contains(" ")){ + String [] fieldArr = this.getFieldName().split(" "); + this.setFieldType(fieldArr[0]); + this.setFieldSimpleName(fieldArr[1]); + } + } + + @Override + public String toString() { + return "FieldBean{" + + "fieldName='" + fieldName + '\'' + + ", desc='" + desc + '\'' + + ", dbColumnName='" + dbColumnName + '\'' + + '}'; + } + + public String getSimpleName(){ + buildFieldDetail(); + return this.getFieldSimpleName(); + } + + @JSONField(serialize = false) + public boolean isMethod(){ + return this.desc.toLowerCase().contains("/") + || this.fieldName.toLowerCase().contains("("); + } + /** + * queryDtoKey:SystemQueryDTO String systemName,String systemCode,Long departmentId, Date startDate,Date endDate + * queryVoKey:SystemQueryVO String systemName,String systemCode,Long departmentId, Date startDate,Date endDate + * + */ + + /** + * 从原始数据中构建查询请求对象 + * @return + */ + public ClassBean buildQueryClass(){ + String queryFieldStr = this.getOriginFieldStr().split(":")[1]; + String [] fieldStrArr = queryFieldStr.split(","); + ClassBean classBean = new ClassBean(); + + List fieldBeanList = new ArrayList<>(); + + for (int i = 0;i < fieldStrArr.length;i++){ + String [] fieldArr = fieldStrArr[i].trim().split(" "); + List fieldStrList = new ArrayList<>(); + for (String fieldStr : fieldArr){ + if(StringUtils.isNotEmpty(fieldStr.trim())){ + fieldStrList.add(fieldStr); + } + } + if(fieldStrList.size() == 3) { + classBean.setClassName(fieldStrList.get(0)); + FieldBean fieldBean = new FieldBean(); + fieldBean.setDesc(""); + fieldBean.setFieldName(fieldStrList.get(1)+" "+fieldStrList.get(2)); + fieldBean.buildFieldDetail(); + fieldBeanList.add(fieldBean); + }else { + FieldBean fieldBean = new FieldBean(); + fieldBean.setDesc(""); + fieldBean.setFieldName(fieldStrList.get(0)+" "+fieldStrList.get(1)); + fieldBean.buildFieldDetail(); + fieldBeanList.add(fieldBean); + } + } + classBean.setFieldBeanList(fieldBeanList); + return classBean; + } + + public void addAnnotationTag(String annotation){ + if(this.annotationTagList.contains(annotation)){ + return; + } + this.annotationTagList.add(annotation); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/InterfaceBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/InterfaceBean.java new file mode 100644 index 0000000..c92a626 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/InterfaceBean.java @@ -0,0 +1,31 @@ +package com.tianhua.codemaker.bean.plantuml; + +import org.apache.commons.collections4.CollectionUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description: + * + * 领域接口 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class InterfaceBean extends AbstractClassBean{ + public Map buildVarMap(){ + Map varMap = new HashMap<>(); + varMap.put("class",this); + varMap.put("fields",this.getFieldBeanList()); + if(CollectionUtils.isNotEmpty(this.getMethodBeanList())){ + this.getMethodBeanList().stream().forEach(methodBean -> methodBean.getSimplMethodName()); + } + varMap.put("methods",this.getMethodBeanList()); + varMap.put("imports",this.getImportClassList()); + return varMap; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/MethodBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/MethodBean.java new file mode 100644 index 0000000..a6e511b --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/MethodBean.java @@ -0,0 +1,745 @@ +package com.tianhua.codemaker.bean.plantuml; + +import com.alibaba.fastjson.annotation.JSONField; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.apidoc.ApiDocBean; +import com.tianhua.codemaker.bean.apidoc.ApiParamBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.VisibilityEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class MethodBean { + + public MethodBean(){} + public MethodBean(String methodName,String returnClass){ + this.methodName = methodName; + this.returnClass = returnClass; + } + + public MethodBean(String methodName,String returnClass, String desc){ + this.methodName = methodName; + this.returnClass = returnClass; + this.desc = desc; + } + /** + * 方法名称, + * 包括参数,括号 + */ + private String methodName; + /** + * 访问权限 + */ + private String visibility; + + /** + * 方法描述 + */ + private String desc; + + /** + * 是否是静态属性 + */ + private boolean isStatic; + + /** + * 方法返回值 + */ + private String returnClass; + + /** + * 方法返回对象所在包 + */ + private String returnClassPackage; + + + /** + * 方法内容 + */ + private String methodContent; + + /** + * 方法返回体 + */ + private String returnBody; + + /** + * controller方法的请求路径 + */ + private String pathValue; + + + /** + * 方法调用内容,根据调用流程图-plantUML解析而来 + */ + private LinkedList invokeMethodList = new LinkedList<>(); + + /** + * 方法调用内容,根据调用流程图-plantUML解析而来 + * 与invokeMethodList保持一致 + * 帮助去除重复和进行上下文调用分析辅助动态绘制 + */ + private List invokeRowBeanList = new ArrayList<>(); + + /** + * 方法文档 + */ + private String doc; + + /** + * 解析出来的方法参数列表 + */ + private String [] paramArr; + + /** + * 参数列表 + */ + private List paramBeanList; + + /** + * list 扩展性比较强 + * 对于mapper和controller需要增加参数注解的进行动态构建参数注解 + */ + private List paramAnnotationList = new ArrayList<>(5); + + /** + * 所属类名 + */ + private String className; + + /** + * 方法上的注解 + */ + private String annotation; + + /** + * 方法的范型返回值 + */ + private String genericReturnType; + + /** + * 方法的范型参数 + */ + private List genericParamList; + + /** + * 是否是bo模型定义的扩展接口 + */ + private boolean modelExtendMethod; + + /** + * plantUML的扩展注解标示 + */ + private List annotationTagList; + + + + private String simpleMethodNameInfo; + + public String getSimpleMethodNameInfo() { + return simpleMethodNameInfo; + } + + public void setSimpleMethodNameInfo(String simpleMethodNameInfo) { + this.simpleMethodNameInfo = simpleMethodNameInfo; + } + + public List getParamBeanList() { + return paramBeanList; + } + + public void setParamBeanList(List paramBeanList) { + this.paramBeanList = paramBeanList; + } + + public List getParamAnnotationList() { + return paramAnnotationList; + } + + public void setParamAnnotationList(List paramAnnotationList) { + this.paramAnnotationList = paramAnnotationList; + } + + public List getAnnotationTagList() { + return annotationTagList; + } + + public void setAnnotationTagList(List annotationTagList) { + this.annotationTagList = annotationTagList; + } + + public boolean isModelExtendMethod() { + return modelExtendMethod; + } + + public void setModelExtendMethod(boolean modelExtendMethod) { + this.modelExtendMethod = modelExtendMethod; + } + + public List getGenericParamList() { + return genericParamList; + } + + public void setGenericParamList(List genericParamList) { + this.genericParamList = genericParamList; + } + + public String getGenericReturnType() { + return genericReturnType; + } + + public void setGenericReturnType(String genericReturnType) { + this.genericReturnType = genericReturnType; + } + + public String getAnnotation() { + return annotation; + } + + public void setAnnotation(String annotation) { + this.annotation = annotation; + } + + + public List getInvokeRowBeanList() { + return invokeRowBeanList; + } + + public void setInvokeRowBeanList(List invokeRowBeanList) { + this.invokeRowBeanList = invokeRowBeanList; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String[] getParamArr() { + return paramArr; + } + + public void setParamArr(String[] paramArr) { + this.paramArr = paramArr; + } + + public String getMethodContent() { + return methodContent; + } + + public void setMethodContent(String methodContent) { + this.methodContent = methodContent; + } + + public LinkedList getInvokeMethodList() { + return invokeMethodList; + } + + public void setInvokeMethodList(LinkedList invokeMethodList) { + this.invokeMethodList = invokeMethodList; + } + + public String getPathValue() { + return pathValue; + } + + public void setPathValue(String pathValue) { + this.pathValue = pathValue; + } + + public String getMethodName() { + return methodName; + } + + public void setMethodName(String methodName) { + this.methodName = methodName; + } + + public String getVisibility() { + return visibility; + } + + public void setVisibility(String visibility) { + this.visibility = visibility; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public boolean isStatic() { + return isStatic; + } + + public void setStatic(boolean aStatic) { + isStatic = aStatic; + } + + public String getReturnClass() { + return returnClass; + } + + public void setReturnClass(String returnClass) { + this.returnClass = returnClass; + } + + public String getReturnClassPackage() { + return returnClassPackage; + } + + public void setReturnClassPackage(String returnClassPackage) { + this.returnClassPackage = returnClassPackage; + } + + + public String getReturnBody() { + return returnBody; + } + + public void setReturnBody(String returnBody) { + this.returnBody = returnBody; + } + + + public String getDoc() { + return doc; + } + + public void setDoc(String doc) { + this.doc = doc; + } + + /** + * 动态构建方法内容 + */ + public void buildMethodContent(){ + if(CollectionUtils.isEmpty(invokeMethodList)){ + return; + } + + StringBuilder contentBuilder = new StringBuilder(); + for (String str : invokeMethodList){ + contentBuilder.append(" "+str+";\n"); + } + if(StringUtils.isEmpty(this.getMethodContent())){ + this.setMethodContent( contentBuilder.toString()); + }else { + this.setMethodContent(this.getMethodContent() + contentBuilder.toString()); + } + } + + /** + * 优化方法接口注释 + * @param desc + */ + public void buildDesc(String desc){ + if(desc.startsWith(VisibilityEnum.PUBLIC.getTag()) + || desc.startsWith(VisibilityEnum.PRIVATE.getTag()) + || desc.startsWith(VisibilityEnum.PROTECT.getTag())){ + String newDesc = desc.substring(1,desc.length()-1); + this.setDesc(newDesc); + }else { + this.setDesc(desc); + } + } + + + + /** + * 构建方法接口注释 + */ + public void buildDoc(){ + StringBuilder builder = new StringBuilder("\t/**\n" + + "\t *\n"); + builder.append("\t * @Description "+this.getDesc()+"\n"); + + if (!this.getMethodName().contains("()")){ + String [] paramArr = this.getMethodName().replace(")","").split("\\(")[1].split(","); + for (String param : paramArr){ + if(param.contains(" ")){ + builder.append("\t * @param "+param.trim().split(" ")[1]+"\n"); + }else { + builder.append("\t * @param "+ StringHandleUtils.getParamVar(param)+"\n"); + } + } + } + builder.append("\t * @return "+this.getReturnClass()+"\n"); + builder.append("\t */"); + this.setDoc(builder.toString()); + } + + + + /** + * 从方法名称中解析到方法参数 + */ + public void buildParamArr(){ + if(this.getParamArr() != null){ + return; + } + if(!this.getMethodName().contains("(") && !this.getMethodName().contains(")")){ + return; + } + if (!this.getMethodName().contains("()")){ + String [] paramArr = this.getMethodName().replace(")","").split("\\(")[1].split(","); + + if(paramArr != null && paramArr.length>=1){ + this.setParamArr(paramArr); + } + } + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MethodBean that = (MethodBean) o; + return Objects.equals(methodName, that.methodName) && + Objects.equals(returnClass, that.returnClass) && + Objects.equals(className, that.className); + } + + @Override + public int hashCode() { + return Objects.hash(methodName, returnClass, className); + } + + /** + * 防止由于引用问题导致的MethodBean对象修改影响其他类下的method方法内容 + * @param methodContent + * @return + */ + public MethodBean copySelf(String methodContent){ + MethodBean newBean = new MethodBean(); + newBean.setClassName(this.getClassName()); + newBean.setDoc(this.getDoc()); + newBean.setMethodContent(methodContent); + newBean.setDesc(this.getDesc()); + newBean.setReturnClass(this.getReturnClass()); + newBean.setReturnBody(this.getReturnBody()); + newBean.setVisibility(this.getVisibility()); + newBean.setParamArr(this.getParamArr()); + newBean.setStatic(this.isStatic()); + newBean.setPathValue(this.getPathValue()); + newBean.setAnnotationTagList(this.getAnnotationTagList()); + newBean.setMethodName(refreshMethodName()); + + return newBean; + } + + /** + * 刷新方法声明,注入方法参数注解,也可能是方法注解,后续可扩展 + * @return + */ + public String refreshMethodName(){ + if(CollectionUtils.isEmpty(this.paramAnnotationList)){ + return this.getMethodName(); + } + String preMethod = this.getMethodName().split("\\(")[0]; + StringBuilder builder = new StringBuilder(preMethod); + List paramList = new ArrayList<>(); + for (int i = 0;i < this.getParamArr().length;i ++){ + String annotation = this.paramAnnotationList.get(i); + String param = this.getParamArr()[i]; + paramList.add(annotation + " " + param); + } + builder.append("("); + builder.append(StringUtils.join(paramList,", ")); + builder.append(")"); + + return builder.toString(); + } + + /** + * 根据返回类型刷新方法返回体 + */ + public void refreshReturnBodyByReturnType(){ + if(this.getReturnClass().contains("void")){ + return; + } + if(StringHandleUtils.isStrictBasicType(this.getReturnClass())){ + if(this.getReturnClass().contains("boolean")){ + this.setReturnBody("return false;"); + } + else if(this.getReturnClass().contains("long")){ + this.setReturnBody("return 0L;"); + } + else if(this.getReturnClass().contains("double")){ + this.setReturnBody("return 0.0;"); + } + else if(this.getReturnClass().contains("float")){ + this.setReturnBody("return 0.0f;"); + } else { + this.setReturnBody("return 0;"); + } + } + + } + + + /** + * 将方法中的参数信息去掉,仅仅获取方法名 + * @return + */ + public String getSimplMethodName(){ + if(this.getMethodName().contains("()")){ + this.simpleMethodNameInfo = this.getMethodName().replace("()",""); + return this.simpleMethodNameInfo; + } + else { + this.simpleMethodNameInfo = this.getMethodName().split("\\(")[0]; + return this.simpleMethodNameInfo; + } + } + + /** + * 构建方法的调用内容 + * @param currentRowContent + * @param currentRowBean + */ + public void addInvokeRowContent(String currentRowContent,InvokeRowBean currentRowBean){ + + for (InvokeRowBean oldRowBean : this.getInvokeRowBeanList()){ + if(oldRowBean.equals(currentRowBean)){ + return; + } + } + + if(CollectionUtils.isEmpty( this.getInvokeRowBeanList())){ + this.getInvokeMethodList().add(currentRowContent); + this.getInvokeRowBeanList().add(currentRowBean); + }else { + //判断变量名是否重复 + Set returnSet = new HashSet<>(); + for (InvokeRowBean invokeRowBean : this.getInvokeRowBeanList()){ + String returnValue = invokeRowBean.getReturnClassName() + invokeRowBean.getReturnClassValue(); + returnSet.add(returnValue); + } + String currentReturnValue = currentRowBean.getReturnClassName() + currentRowBean.getReturnClassValue(); + if(returnSet.contains(currentReturnValue)){ + currentRowBean.setReturnClassValue(currentRowBean.getReturnClassValue()+this.getInvokeRowBeanList().size()); + this.getInvokeRowBeanList().add(currentRowBean); + this.getInvokeMethodList().add(currentRowBean.buildInvokeContent()); + } + + } + + } + + + /** + * 简化版本构建方法调用内容 + * 代码段场景+分层场景使用 + * @param invokeRowContent + */ + public void addInvokeRowContentSimple(String invokeRowContent){ + this.invokeMethodList.add(invokeRowContent); + } + + /** + * 解析方法返回参数类型,是否包含vo,dto,bo + * @return + */ + @JSONField(serialize = false) + public String getReturnClassTypeModel(){ + if(this.getReturnClass().contains("void")){ + return ""; + } + + if(this.getReturnClass().contains("<")){ + String [] returnClassArr = this.getReturnClass().split("<"); + String matchClassType = ""; + for (String classStr : returnClassArr){ + String classType = classStr.trim().replace(">",""); + if(TemplateFileEnum.isClassModel(classType)){ + matchClassType = classType; + } + } + return matchClassType; + } + return this.getReturnClass(); + } + + /** + * 解析方法返回参数类型,是否包含vo,dto,bo + * @return + */ + @JSONField(serialize = false) + public String getReturnClassTypeNoWrapper(){ + if(this.getReturnClass().contains("void")){ + return ""; + } + + if(!this.wrapperResultDto() && !this.wrapperResultDataDto()){ + return this.getReturnClass(); + } + + if(this.getReturnClass().contains("<")){ + int index = this.getReturnClass().indexOf("<"); + return this.getReturnClass().substring(index+1,this.getReturnClass().length() - 1); + } + return this.getReturnClass(); + } + + + + /** + * 校验外部参数是否与方法参数匹配,这里只需要匹配一个即可 + * @param param + * @return + */ + public boolean paramMatchOne(String param){ + if(this.getParamArr() == null || this.getParamArr().length == 0){ + return false; + } + String tempParam = param; + if(tempParam.trim().contains(" ")){ + tempParam = tempParam.split(" ")[0]; + } + for (String paramInfo : this.getParamArr()){ + String paramType = paramInfo; + if(paramInfo.trim().contains(" ")){ + paramType = paramInfo.split(" ")[0]; + } + if(paramType.toLowerCase().endsWith(tempParam.toLowerCase())){ + return true; + } + } + return false; + } + + /** + * 判断方法是不是有包装类对象 + * @return + */ + public boolean wrapperResultDto(){ + + if (this.getReturnClass().contains("Result")){ + return true; + } + return false; + } + + public boolean wrapperResultDataDto(){ + if(this.getReturnClass().contains("ResultDataDto")){ + return true; + } + return false; + } + + + /** + * 动态构建方法返回值包装 + * @param returnBody + */ + public void wrapperResultBody(String returnBody){ + if(this.getReturnClass().equals("void")){ + return; + } + if(this.getReturnClass().contains(returnBody)){ + return; + } + + this.setReturnClass(returnBody+"<"+this.getReturnClass()+">"); + } + + + + /** + * 构建api文档 + * @return + */ + public ApiDocBean buildApiDocBean(Map classVOBeanMap){ + ApiDocBean apiDocBean = new ApiDocBean(); + apiDocBean.setInterfaceName(this.getSimplMethodName()); + apiDocBean.setParamBeanList(convertToApiParam(classVOBeanMap)); + apiDocBean.setReturnClass(this.getReturnClass()); + apiDocBean.setInterfaceDesc(this.getDesc()); + apiDocBean.setHttpPath(this.getPathValue()); + return apiDocBean; + } + + private List convertToApiParam(Map classVOBeanMap){ + if(this.getParamArr() == null || this.getParamArr().length == 0){ + return null; + } + List apiParamBeanList = new ArrayList<>(); + for (String param : this.getParamArr()){ + ApiParamBean apiParamBean = new ApiParamBean(); + if(!param.trim().contains(" ")){ + continue; + } + String [] arr = param.split(" "); + apiParamBean.setFieldName(arr[1]); + apiParamBean.setFieldType(arr[0]); + apiParamBeanList.add(apiParamBean); + if(arr[0].toLowerCase().endsWith(TemplateFileEnum.VO.getTempFileName()) + || arr[0].toLowerCase().endsWith(TemplateFileEnum.DTO.getTempFileName())){ + ClassBean classBean = classVOBeanMap.get(arr[0]); + if(classBean == null){ + + continue; + } + apiParamBeanList.get(apiParamBeanList.size() - 1).setFieldDesc("对象类型,参数如下:"); + for (FieldBean fieldBean : classBean.getFieldBeanList()){ + if(fieldBean.getFieldName().contains("*")){ + continue; + } + ApiParamBean paramBean = new ApiParamBean(); + String [] arr2 = fieldBean.getFieldName().split(" "); + paramBean.setFieldName(arr2[1]); + paramBean.setFieldType(arr2[0]); + paramBean.setFieldDesc(fieldBean.getDesc()); + apiParamBeanList.add(paramBean); + } + + } + + } + return apiParamBeanList; + } + + + /** + * 判断方法是否需要导出acl param + * @return + */ + @JSONField(serialize = false) + public boolean isExportAclKey(){ + return this.desc.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY) + || this.methodName.toLowerCase().contains(GlobalConstant.EXPORT_ACL_KEY); + } + + public void addParamAnnotation(String paramAnnotation, int index){ + this.paramAnnotationList.add(paramAnnotation); + if(StringUtils.isEmpty(this.paramAnnotationList.get(index))){ + this.paramAnnotationList.set(index,paramAnnotation); + }else { + if(this.paramAnnotationList.get(index).contains(paramAnnotation)){ + return; + } + String paramAnno = paramAnnotation + " " + this.paramAnnotationList.get(index); + this.paramAnnotationList.set(index,paramAnno); + } + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PackageBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PackageBean.java new file mode 100644 index 0000000..5664fbb --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PackageBean.java @@ -0,0 +1,51 @@ +package com.tianhua.codemaker.bean.plantuml; + +import java.util.List; + +/** + * Description: + * date: 2021/7/2 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PackageBean { + private String packageName; + + private List enumBeanList; + private List interfaceBeanList; + private List classBeanList; + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public List getEnumBeanList() { + return enumBeanList; + } + + public void setEnumBeanList(List enumBeanList) { + this.enumBeanList = enumBeanList; + } + + public List getInterfaceBeanList() { + return interfaceBeanList; + } + + public void setInterfaceBeanList(List interfaceBeanList) { + this.interfaceBeanList = interfaceBeanList; + } + + public List getClassBeanList() { + return classBeanList; + } + + public void setClassBeanList(List classBeanList) { + this.classBeanList = classBeanList; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ParamBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ParamBean.java new file mode 100644 index 0000000..18a73e4 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/ParamBean.java @@ -0,0 +1,67 @@ +package com.tianhua.codemaker.bean.plantuml; + +/** + * Description: + * date: 2022/3/14 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ParamBean { + + + public ParamBean(){} + public ParamBean(String paramClass, String paramName){ + this.paramClass = paramClass; + this.paramName = paramName; + } + + /** + * 参数类型 + */ + private String paramClass; + + /** + * 参数类型 + */ + private String paramName; + + + /** + * 是否是范型参数 + */ + private boolean genericType; + + + public String getParamName() { + return paramName; + } + + public void setParamName(String paramName) { + this.paramName = paramName; + } + + public String getParamClass() { + return paramClass; + } + + public void setParamClass(String paramClass) { + this.paramClass = paramClass; + } + + + public boolean isGenericType() { + return genericType; + } + + public void setGenericType(boolean genericType) { + this.genericType = genericType; + } + + public static ParamBean getInstance(String paramClass, String paramName, Boolean genericType){ + ParamBean paramBean = new ParamBean(paramClass,paramName); + paramBean.setGenericType(genericType); + return paramBean; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternBean.java new file mode 100644 index 0000000..295fa52 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternBean.java @@ -0,0 +1,55 @@ +package com.tianhua.codemaker.bean.plantuml; + +/** + * Description:范型模型 + * date: 2022/3/14 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PatternBean { + + /** + * 范型类型标示 + * 或者类名 + */ + public String tagClass; + + /** + * 范型类继承的父类 + * ? extends T + */ + public boolean withExtends; + + /** + * 范型类的父类 + * ? super T + */ + public Boolean withSuper; + + + public String getTagClass() { + return tagClass; + } + + public void setTagClass(String tagClass) { + this.tagClass = tagClass; + } + + public boolean isWithExtends() { + return withExtends; + } + + public void setWithExtends(boolean withExtends) { + this.withExtends = withExtends; + } + + public Boolean getWithSuper() { + return withSuper; + } + + public void setWithSuper(Boolean withSuper) { + this.withSuper = withSuper; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternMethodBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternMethodBean.java new file mode 100644 index 0000000..ad8a903 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PatternMethodBean.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.bean.plantuml; + +/** + * Description: + * date: 2022/3/14 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PatternMethodBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PlantUmlContextBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PlantUmlContextBean.java new file mode 100644 index 0000000..5ebfad4 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/plantuml/PlantUmlContextBean.java @@ -0,0 +1,206 @@ +package com.tianhua.codemaker.bean.plantuml; + +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ + +public class PlantUmlContextBean { + + private Map classBeanMap = new HashMap<>(); + + private Map enumBeanMap = new HashMap<>(); + + private Map interfaceBeanMap = new HashMap<>(); + + /** + * pom相关配置 + */ + public Map pomBeanMap = new HashMap<>(); + + /** + * 派生类上下文 + */ + private PlantUmlContextBean derivedPlantUmlContextBean; + + /** + * 扫描到的依赖组件 + */ + private Map compContextBeanMap = new HashMap<>(); + + + /** + * app应用名称 + */ + private String appName; + + /** + * app应用类型 + */ + private String applicationType; + + /** + * 动态调用时序图文件 + */ + private List dynamicInvokeFileList = new ArrayList<>(); + + /** + * 记录解析调用时序中调用方的类和方法名 + * key:调用方的类名.方法名 + * value:被调用方的类名.方法名 + */ + private Map> dynamicInvokeChainMap = new HashMap<>(); + + + /** + * 自定义代码元素配置bean对象,在对应elementHandler做路由标示 + */ + private FtlBean ftlBean; + + public FtlBean getFtlBean() { + return ftlBean; + } + + public void setFtlBean(FtlBean ftlBean) { + this.ftlBean = ftlBean; + } + + public Map> getDynamicInvokeChainMap() { + return dynamicInvokeChainMap; + } + + public PlantUmlContextBean getDerivedPlantUmlContextBean() { + return derivedPlantUmlContextBean; + } + + public void setDerivedPlantUmlContextBean(PlantUmlContextBean derivedPlantUmlContextBean) { + this.derivedPlantUmlContextBean = derivedPlantUmlContextBean; + } + + public Map getPomBeanMap() { + return pomBeanMap; + } + + public Map getClassBeanMap() { + return classBeanMap; + } + + public Map getEnumBeanMap() { + return enumBeanMap; + } + + public Map getInterfaceBeanMap() { + return interfaceBeanMap; + } + + public void addClassBean(ClassBean classBean) { + this.classBeanMap.put(classBean.getClassName(), classBean); + } + + public void addInterfaceBean(InterfaceBean interfaceBean) { + + this.interfaceBeanMap.put(interfaceBean.getClassName(), interfaceBean); + } + + public void addPomBean(PomBean pomBean) { + if(StringUtils.isEmpty(pomBean.getModuleCode())){ + return; + } + this.pomBeanMap.put(pomBean.getModuleCode(), pomBean); + } + + public void addEnumBean(EnumBean enumBean) { + this.enumBeanMap.put(enumBean.getClassName(), enumBean); + } + + + public List getDynamicInvokeFileList() { + return dynamicInvokeFileList; + } + + /** + * 解析多个调用时序图文件名称 + * + * @param plantUMLFileName + */ + public void addDynamicInvokeFile(String plantUMLFileName) { + if (plantUMLFileName.contains(",")) { + String[] arr = plantUMLFileName.split(","); + for (String fileName : arr) { + dynamicInvokeFileList.add(fileName.trim()); + } + return; + } + dynamicInvokeFileList.add(plantUMLFileName); + } + + /** + * 记录调用时序图中的调用方信息 + * + * @param invokeContextBean + * @return 是否保存成功 + */ + public boolean addInvokeMethod(InvokeContextBean invokeContextBean) { + + String key = invokeContextBean.getInvokerClassBean().getClassName() + "." + invokeContextBean.getInvokerMethodBean().getMethodName(); + + Set providerMethodSet = this.dynamicInvokeChainMap.get(key); + if (providerMethodSet == null) { + providerMethodSet = Sets.newHashSet(); + } + String value = invokeContextBean.getProviderClassName() + invokeContextBean.getProviderClassMethod(); + + if (providerMethodSet.contains(value)) { + return false; + } + providerMethodSet.add(value); + + this.getDynamicInvokeChainMap().put(key, providerMethodSet); + + return true; + } + + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getApplicationType() { + return applicationType; + } + + public void setApplicationType(String applicationType) { + this.applicationType = applicationType; + } + + public Map getCompContextBeanMap() { + return compContextBeanMap; + } + + public void addCompContextBean(String key, ComponentContextBean componentContextBean) { + this.compContextBeanMap.put(key, componentContextBean); + } + + + public void addCompContextBeanBatch(Map componentContextBeanMap) { + this.compContextBeanMap.putAll(componentContextBeanMap); + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/segment/SegmentBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/segment/SegmentBean.java new file mode 100644 index 0000000..25d3d0c --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/bean/segment/SegmentBean.java @@ -0,0 +1,113 @@ +package com.tianhua.codemaker.bean.segment; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Description;代码片段模型 + * date; 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class SegmentBean { + + public SegmentBean(){} + public SegmentBean(String identifer){ + this.identifer = identifer; + } + + public SegmentBean(String identifer, String code){ + this.identifer = identifer; + this.code = code; + } + /** + * 代码段内容 + */ + private String code; + /** + * 代码段中需要导入的包 + */ + private List packageNameList = new ArrayList<>(); + /** + * 代码段类型标示 + */ + private String identifer; + /** + * 代码段模板 + */ + private String segmentTemplate; + + /** + * 代码段模板对应的变量列表map + */ + private Map templateVarMap; + + /** + * 关联的代码类名称 + */ + private String relationClassName; + + + + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public List getPackageNameList() { + return packageNameList; + } + + public void setPackageNameList(List packageNameList) { + this.packageNameList = packageNameList; + } + + public String getIdentifer() { + return identifer; + } + + public void setIdentifer(String identifer) { + this.identifer = identifer; + } + + public String getSegmentTemplate() { + return segmentTemplate; + } + + public void setSegmentTemplate(String segmentTemplate) { + this.segmentTemplate = segmentTemplate; + } + + public Map getTemplateVarMap() { + return templateVarMap; + } + + public void setTemplateVarMap(Map templateVarMap) { + this.templateVarMap = templateVarMap; + } + + public String getRelationClassName() { + return relationClassName; + } + + public void setRelationClassName(String relationClassName) { + this.relationClassName = relationClassName; + } + + + public static SegmentBean getInstance(String identifer, String code ){ + return new SegmentBean(identifer, code); + } + + public void importPackageName(String packageName){ + this.packageNameList.add(packageName); + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AdapterPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AdapterPomElementBean.java new file mode 100644 index 0000000..da21d30 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AdapterPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class AdapterPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AppPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AppPomElementBean.java new file mode 100644 index 0000000..5221215 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/AppPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class AppPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/CustomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/CustomElementBean.java new file mode 100644 index 0000000..1c944ef --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/CustomElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class CustomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/DomainPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/DomainPomElementBean.java new file mode 100644 index 0000000..06422b4 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/DomainPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class DomainPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignApiPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignApiPomElementBean.java new file mode 100644 index 0000000..4f10abb --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignApiPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class FeignApiPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignProviderPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignProviderPomElementBean.java new file mode 100644 index 0000000..9c535e6 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/FeignProviderPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class FeignProviderPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/InfrastPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/InfrastPomElementBean.java new file mode 100644 index 0000000..b4f2a2e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/InfrastPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class InfrastPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ParentPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ParentPomElementBean.java new file mode 100644 index 0000000..6b8727e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ParentPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class ParentPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/PomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/PomElementBean.java new file mode 100644 index 0000000..a7459ed --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/PomElementBean.java @@ -0,0 +1,16 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class PomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/StartPomElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/StartPomElementBean.java new file mode 100644 index 0000000..92a16b0 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/StartPomElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class StartPomElementBean extends ElementBean { + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ValidatorElementBean.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ValidatorElementBean.java new file mode 100644 index 0000000..df7bb76 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/bean/ValidatorElementBean.java @@ -0,0 +1,17 @@ +package com.tianhua.codemaker.custom.bean; + +import com.tianhua.codemaker.bean.dddelement.ElementBean; + +/** + * Description: + * 自定义代码元素实现 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Deprecated +public class ValidatorElementBean extends ElementBean { + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/package-info.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/package-info.java new file mode 100644 index 0000000..9ac5422 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/custom/package-info.java @@ -0,0 +1 @@ +package com.tianhua.codemaker.custom; \ No newline at end of file diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassEnum.java new file mode 100644 index 0000000..667eb5e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassEnum.java @@ -0,0 +1,49 @@ +package com.tianhua.codemaker.enums; + +import java.util.Objects; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum ClassEnum { + ENTITY("entity"), + CLASS("class"), + INTERFACE("interface"), + ENUM("enum"), + POM("pom"), + PROPERTIES("properties"), + YML("YML"), + + ; + private String classType; + ClassEnum(String classType){ + this.classType = classType; + } + + public String getClassType() { + return classType; + } + + public static boolean isClass(String classType){ + return Objects.equals(classType,ClassEnum.CLASS.getClassType()); + } + + public static boolean isInterface(String classType){ + return Objects.equals(classType,ClassEnum.INTERFACE.getClassType()); + } + + public static boolean isEnum(String classType){ + return Objects.equals(classType,ClassEnum.ENUM.getClassType()); + } + + public static boolean isPom(String classType){ + return Objects.equals(classType,ClassEnum.POM.getClassType()); + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassRelationEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassRelationEnum.java new file mode 100644 index 0000000..1764f95 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ClassRelationEnum.java @@ -0,0 +1,119 @@ +package com.tianhua.codemaker.enums; + +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum ClassRelationEnum { + + /** + * GENERALIZATION + */ + GENERALIZATION("泛化-继承", Sets.newHashSet("<|--","--|>")), + REALIZE("实现",Sets.newHashSet("..|>","<|..")), + ; + + private String desc; + private Set tagSet; + ClassRelationEnum(String desc, Set tagSet){ + this.desc = desc; + this.tagSet = tagSet; + } + + public String getDesc() { + return desc; + } + + public Set getTagSet() { + return tagSet; + } + + /** + * 解析类间关系 + * @param content + * @return + */ + public static Map parseRelation(String content){ + AtomicReference classRelationEnum = new AtomicReference<>(); + for (ClassRelationEnum relationEnum : ClassRelationEnum.values()){ + relationEnum.getTagSet().forEach(tag->{ + if(content.contains(tag)){ + classRelationEnum.set(relationEnum); + } + }); + } + ClassRelationEnum relationEnum = classRelationEnum.get(); + if(relationEnum == null){ + return null; + } + Map map = new HashMap<>(); + String className = getChild(content); + if (!StringUtils.isEmpty(className)) { + map.put("class",className); + } + if(relationEnum.name().equals(ClassRelationEnum.GENERALIZATION.name())){ + map.put("relation"," extends "+getSuper(content)); + } + if(relationEnum.name().equals(ClassRelationEnum.REALIZE.name())){ + map.put("relation"," implements "+getSuper(content)); + } + + return map; + } + + /** + * 获取父类或者接口 + * @param content + * @return + */ + private static String getSuper(String content){ + if(content.contains("<|--")){ + return content.trim().split("<\\|--")[0]; + } + if(content.contains("--|>")){ + return content.trim().split("--\\|>")[1]; + } + if(content.contains("..|>")){ + return content.trim().split("..\\|>")[1]; + } + if(content.contains("<|..")){ + return content.trim().split("<\\|..")[0]; + } + return null; + } + + + /** + * 获取父类或者接口 + * @param content + * @return + */ + private static String getChild(String content){ + if(content.contains("<|--")){ + return content.trim().split("<\\|--")[1]; + } + if(content.contains("--|>")){ + return content.trim().split("--\\|>")[0]; + } + if(content.contains("..|>")){ + return content.trim().split("..\\|>")[0]; + } + if(content.contains("<|..")){ + return content.trim().split("<\\|..")[1]; + } + return null; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeElementEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeElementEnum.java new file mode 100644 index 0000000..9a31209 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CodeElementEnum.java @@ -0,0 +1,78 @@ +package com.tianhua.codemaker.enums; + +/** + * description: TemplateFileEnum
+ * date: 2020/7/7 23:44
+ * author: coderman
+ * version: 1.0
+ * 代码元素类型枚举 + */ +public enum CodeElementEnum { + ENTITY("entity", ClassEnum.CLASS.getClassType()), + MAPPER("mapper", ClassEnum.INTERFACE.getClassType()), + POM("pom",""), + CONTROLLER("controller",ClassEnum.CLASS.getClassType()), + MAPPER_XML("mapperxml",""), + SERVICE_CLASS("serviceclasss",ClassEnum.CLASS.getClassType()), + SERVICE_INTERFACE("serviceinterface",ClassEnum.INTERFACE.getClassType()), + + SERVICE_IMPL("serviceImpl",ClassEnum.CLASS.getClassType()), + VO("vo",ClassEnum.CLASS.getClassType()), + TEST("test",ClassEnum.CLASS.getClassType()), + DTO("dto",ClassEnum.CLASS.getClassType()), + FACADE("facade",ClassEnum.INTERFACE.getClassType()), + DATA_OBJECT("do",ClassEnum.CLASS.getClassType()), + FACADE_IMPL("facadeImpl",ClassEnum.CLASS.getClassType()), + BUSINESS_OBJECT("bo",ClassEnum.CLASS.getClassType()), + CONVERT("convert",ClassEnum.INTERFACE.getClassType()), + DTOBO_CONVERT("dtoboconvert",ClassEnum.INTERFACE.getClassType()), + DTO2DTO_CONVERT("dto2dtoconvert",ClassEnum.INTERFACE.getClassType()), + DOBO_CONVERT("doboconvert",ClassEnum.INTERFACE.getClassType()), + GATAWAY("gataway",ClassEnum.INTERFACE.getClassType()), + REPOSITORY("repository",ClassEnum.INTERFACE.getClassType()), + REPOSITORY_IMPL("repositoryimpl",ClassEnum.CLASS.getClassType()), + FACTORY("factory",ClassEnum.CLASS.getClassType()), + ENUM("enum",ClassEnum.ENUM.getClassType()), + API_ENUM("apienum",ClassEnum.ENUM.getClassType()), + MESSAGE_BODY("msgbody",ClassEnum.CLASS.getClassType()), + EVENT_BODY("event",ClassEnum.CLASS.getClassType()), + GATAWAY_IMPL("gatawayimpl",ClassEnum.CLASS.getClassType()), + ACL_IMPL("aclimpl",ClassEnum.CLASS.getClassType()), + ACL_REQ("aclreq",ClassEnum.CLASS.getClassType()), + ACL_RES("aclres",ClassEnum.CLASS.getClassType()), + ACL_PARAM("aclparam",ClassEnum.CLASS.getClassType()), + CMD("cmd",ClassEnum.CLASS.getClassType()), + EXE("exe",ClassEnum.INTERFACE.getClassType()), + EXE_IMPL("exeimpl",ClassEnum.CLASS.getClassType()), + EXE_ABSTRACT("abstractexe" ,ClassEnum.CLASS.getClassType()), + VALUE_OBJECT("valueobject", ClassEnum.CLASS.getClassType()), + VOBO_CONVERT("voboconvert",ClassEnum.INTERFACE.getClassType()), + + MQ_CONSUMER("mqconsumer",ClassEnum.CLASS.getClassType()), + MQ_HANDLER("mqhandler",ClassEnum.CLASS.getClassType()), + MQ_LISTENER("mqlistener",ClassEnum.CLASS.getClassType()), + MQ_PRODUCER("mqproducer",ClassEnum.CLASS.getClassType()), + + + + FEIGN("feign",ClassEnum.INTERFACE.getClassType()), + + + ; + private String code; + + private String classType; + + CodeElementEnum(String code,String classType){ + this.code = code; + this.classType = classType; + } + + public String getCode() { + return code; + } + + public String getClassType() { + return classType; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CompTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CompTypeEnum.java new file mode 100644 index 0000000..d3f2bcc --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/CompTypeEnum.java @@ -0,0 +1,33 @@ +package com.tianhua.codemaker.enums; + +/** + * Description:组件类型 + * date: 2021/12/23 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum CompTypeEnum { + + TOOL("tool","工具类组件"), + //默认 + SPRING("spring","spring容器类组件"), + DUBBO_API("dubbo-api","dubbo对外暴露api"), + PACKAGE_PRIVATE("feign-api","spring cloud 对外暴露api"), + ; + private String compTag; + private String compDesc; + CompTypeEnum(String compTag, String compDesc){ + this.compTag = compTag; + this.compDesc = compDesc; + } + + public String getCompTag() { + return compTag; + } + + public String getCompDesc() { + return compDesc; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ConfigFileEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ConfigFileEnum.java new file mode 100644 index 0000000..174d339 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ConfigFileEnum.java @@ -0,0 +1,27 @@ +package com.tianhua.codemaker.enums; + +/** + * Description: + * date: 2022/3/30 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum ConfigFileEnum { + + PROPERTIES("properties"), + YML("yml"), + CONFIG("config"), + SH("sh"), + ; + + private String fileExtName; + ConfigFileEnum(String fileExtName){ + this.fileExtName = fileExtName; + } + + public String getFileExtName() { + return fileExtName; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainDerivedElementEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainDerivedElementEnum.java new file mode 100644 index 0000000..0725049 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainDerivedElementEnum.java @@ -0,0 +1,40 @@ +package com.tianhua.codemaker.enums; + +/** + * Description:领域派生类枚举 + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum DomainDerivedElementEnum { + DTO("dto","数据传输对象"), + FACADE("facade","api门面接口"), + FEIGN("feign","api门面接口"), + ENUM("enum","api 枚举包"), + FACADE_IMPL("facadeimpl","api门面接口实现"), + DTOBO_CONVERT("convert","dto-bo相互转换mapstruct接口"), + DOBO_CONVERT("converter","do-bo相互转换mapstruct接口"), + VOBO_CONVERT("convertervobo","vo-bo相互转换mapstruct接口"), + VO("vo","视图传输对象"), + CONTROLLER("controller","控制器"), + DTO2DTO_CONVERT("convertordto","dto-to相互转换mapstruct接口"), + + ; + private String element; + private String desc; + DomainDerivedElementEnum(String element, String desc){ + this.element = element; + this.desc = desc; + } + + + public String getElement() { + return element; + } + + public String getDesc() { + return desc; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainElementEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainElementEnum.java new file mode 100644 index 0000000..650da1e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/DomainElementEnum.java @@ -0,0 +1,61 @@ +package com.tianhua.codemaker.enums; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum DomainElementEnum { + VALUEOBJECT("valueobject,config,vo","值对象"), + CONFIG("config","值对象"), + ENUM("enum","值对象"), + BO("bo","领域实体"), + SERVICE("service","领域服务"), + GATAWAY("gataway","领域网关服务"), + MSGBODY("msgbody","事件消息体"), + EVENT("event","事件"), + FACTORY("factory","领域工厂"), + REPOSITORY("repository","领域仓库"), + ACL("acl","适配器防腐层"), + ADAPTER("adapter","适配器防腐层"), + ADAPTER_SERVICE("adapterservice","适配器防腐层"), + COMMAND("command,cmd","命令"), + EXECUTOR("executor,exe,exeservice,exehandler","执行器"), + APP_LISTENER("mqlistener","监听器"), + MQ_CONSUMER("mqconsumer","消息消费者"), + MQ_PRODUCER("mqproducer","消息生产者"), + MQ_HANDLER("mqhandler","消息处理器"), + CACHE("cache","缓存"), + + SERVICE_IMPL("serviceimpl","领域服务实现"), + GATAWAY_IMPL("gatawayimpl","领域网关服务实现"), + REPOSITORY_IMPL("repositoryimpl","领域仓库实现"), + ACL_IMPL("aclimpl","适配器防腐层实现"), + ADAPTER_IMPL("aclimpl","适配器防腐层实现"), + ADAPTER_ACL_IMPL("adapterimpl,aclimpl","适配器防腐层实现"), + + //这里的mapper只是为了辅助代码生成,严格来说不算领域元素 + DYNAMIC_MAPPER("mapper","动态mapper"), + + + + ; + private String element; + private String desc; + DomainElementEnum(String element, String desc){ + this.element = element; + this.desc = desc; + } + + + public String getElement() { + return element; + } + + public String getDesc() { + return desc; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/MethodReturnClassTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/MethodReturnClassTypeEnum.java new file mode 100644 index 0000000..26d3880 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/MethodReturnClassTypeEnum.java @@ -0,0 +1,69 @@ +package com.tianhua.codemaker.enums; + +/** + * Description:方法返回类型 + * date: 2021/10/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum MethodReturnClassTypeEnum { + PAGE("page","page包装对象"), + LIST("list","list包装对象"), + SET("set","set集合对象"), + ONE("one","one单条对象"), + VOID("void","void空对象"), + OTHER("other","其他返回对象"), + ; + private String code; + private String desc; + MethodReturnClassTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + /** + * 根据返回类型判断返回什么类型的对象 + * @param returnClassStr + * @return + */ + public static String getReturnType(String returnClassStr){ + + if(returnClassStr.contains(MethodReturnClassTypeEnum.VOID.getCode())){ + return MethodReturnClassTypeEnum.VOID.getCode(); + } + + if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.PAGE.getCode())){ + return MethodReturnClassTypeEnum.PAGE.getCode(); + } + + if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.LIST.getCode())){ + return MethodReturnClassTypeEnum.LIST.getCode(); + } + + + if(returnClassStr.toLowerCase().contains(MethodReturnClassTypeEnum.SET.getCode())){ + return MethodReturnClassTypeEnum.SET.getCode(); + } + + if(returnClassStr.toLowerCase().contains(TemplateFileEnum.VO.getTempFileName()) + || returnClassStr.toLowerCase().contains(TemplateFileEnum.DTO.getTempFileName())){ + return MethodReturnClassTypeEnum.VOID.getCode(); + + } + + return MethodReturnClassTypeEnum.OTHER.getCode(); + + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ModuleEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ModuleEnum.java new file mode 100644 index 0000000..89ba06e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/ModuleEnum.java @@ -0,0 +1,425 @@ +package com.tianhua.codemaker.enums; + + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.google.common.collect.Sets; + +import java.util.Set; + +/** + * Description: 项目模块枚举 + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum ModuleEnum { + /** + * + */ + SPRING_BOOT_WEB("springboot","springboot", + Sets.newHashSet( + TemplateFileEnum.MAPPER_XML.getTempFileName(), + TemplateFileEnum.MAPPER.getTempFileName(), + TemplateFileEnum.MAPPER_DDD.getTempFileName(), + TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), + TemplateFileEnum.CONTROLLER.getTempFileName(), + TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL.getTempFileName(), + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.SERVICE_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.VO.getTempFileName(), + TemplateFileEnum.VO_DDD.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.ENTITY.getTempFileName(), + TemplateFileEnum.DATA_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), + + TemplateFileEnum.TEST.getTempFileName(), + TemplateFileEnum.TEST_DDD.getTempFileName(), + TemplateFileEnum.VALUE_OBJECT.getTempFileName(), + TemplateFileEnum.ENUM.getTempFileName(), + TemplateFileEnum.CMD.getTempFileName(), + TemplateFileEnum.EXE.getTempFileName(), + TemplateFileEnum.EXE_IMPL.getTempFileName(), + TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), + TemplateFileEnum.GATAWAY.getTempFileName(), + TemplateFileEnum.REPOSITORY.getTempFileName(), + TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), + TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), + TemplateFileEnum.ACL.getTempFileName(), + TemplateFileEnum.ACL_IMPL.getTempFileName(), + TemplateFileEnum.ACL_PARAM.getTempFileName(), + TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), + //TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), + TemplateFileEnum.VOBO_CONVERT.getTempFileName(), + TemplateFileEnum.FACTORY.getTempFileName(), + TemplateFileEnum.MESSAGE_BODY.getTempFileName(), + TemplateFileEnum.EVENT_BODY.getTempFileName(), + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.DOBO_CONVERT.getTempFileName(), + + TemplateFileEnum.MQ_CONSUMER.getTempFileName(), + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MQ_LISTENER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.PARENT_POM.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.CACHE.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON) + ), + + + + + + /** + * springcloud feign + */ + SC_FEIGN_API("springcloud","springcloud-api", Sets.newHashSet( + TemplateFileEnum.FEIGN.getTempFileName(), + TemplateFileEnum.FEIGN_DDD.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.API_ENUM.getTempFileName(), + TemplateFileEnum.API_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + )), + + /** + * + */ + SC_FEIGN_PROVIDER("springcloud","springcloud-provider", + Sets.newHashSet( + TemplateFileEnum.MAPPER_XML.getTempFileName(), + TemplateFileEnum.MAPPER.getTempFileName(), + TemplateFileEnum.MAPPER_DDD.getTempFileName(), + TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), + + TemplateFileEnum.CONTROLLER.getTempFileName(), + TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL.getTempFileName(), + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.SERVICE_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.ENTITY.getTempFileName(), + TemplateFileEnum.DATA_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), + TemplateFileEnum.TEST_DDD.getTempFileName(), + TemplateFileEnum.TEST.getTempFileName(), + TemplateFileEnum.VALUE_OBJECT.getTempFileName(), + TemplateFileEnum.ENUM.getTempFileName(), + TemplateFileEnum.CMD.getTempFileName(), + TemplateFileEnum.EXE.getTempFileName(), + TemplateFileEnum.EXE_IMPL.getTempFileName(), + TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), + TemplateFileEnum.GATAWAY.getTempFileName(), + TemplateFileEnum.REPOSITORY.getTempFileName(), + TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), + TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), + TemplateFileEnum.ACL.getTempFileName(), + TemplateFileEnum.ACL_IMPL.getTempFileName(), + TemplateFileEnum.ACL_PARAM.getTempFileName(), + TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), + TemplateFileEnum.FACTORY.getTempFileName(), + TemplateFileEnum.MESSAGE_BODY.getTempFileName(), + TemplateFileEnum.EVENT_BODY.getTempFileName(), + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.DOBO_CONVERT.getTempFileName(), + + TemplateFileEnum.MQ_CONSUMER.getTempFileName(), + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MQ_LISTENER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.CACHE.getTempFileName(), + + TemplateFileEnum.FEIGN.getTempFileName(), + TemplateFileEnum.FEIGN_DDD.getTempFileName(), + TemplateFileEnum.FEIGN_CONTROLLER.getTempFileName(), + TemplateFileEnum.FEIGN_CONTROLLER_DDD.getTempFileName(), + TemplateFileEnum.PROVIDER_POM.getTempFileName(), + + //TemplateFileEnum.BASE_EVENT.getTempFileName(), + //TemplateFileEnum.APP_EVENT_PUBLISHER.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + //TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName() + )), + + + + /** + * + */ + DUBBO_API("dubbo","dubbo-api", Sets.newHashSet( + TemplateFileEnum.FACADE.getTempFileName(), + TemplateFileEnum.FACADE_DDD.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.API_ENUM.getTempFileName(), + TemplateFileEnum.API_POM.getTempFileName(), + + GlobalConstant.SINGLE_CLASS_COMMON + )), + /** + * + */ + DUBBO_COMMON("dubbo","dubbo-common", Sets.newHashSet( + TemplateFileEnum.MAPPER_XML.getTempFileName(), + TemplateFileEnum.MAPPER.getTempFileName(), + TemplateFileEnum.MAPPER_DDD.getTempFileName(), + TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), + + TemplateFileEnum.DATA_OBJECT.getTempFileName(), + TemplateFileEnum.COMMON_POM.getTempFileName(), + + GlobalConstant.SINGLE_CLASS_COMMON + )), + /** + * + */ + DUBBO_CORE("dubbo","dubbo-core", Sets.newHashSet( + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), + + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL.getTempFileName(), + TemplateFileEnum.TEST.getTempFileName(), + TemplateFileEnum.TEST_DDD.getTempFileName(), + TemplateFileEnum.FACADE_IMPL.getTempFileName(), + TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_DDD.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.VALUE_OBJECT.getTempFileName(), + TemplateFileEnum.ENUM.getTempFileName(), + TemplateFileEnum.CMD.getTempFileName(), + TemplateFileEnum.EXE.getTempFileName(), + TemplateFileEnum.EXE_IMPL.getTempFileName(), + TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), + TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), + TemplateFileEnum.GATAWAY.getTempFileName(), + TemplateFileEnum.REPOSITORY.getTempFileName(), + TemplateFileEnum.FACTORY.getTempFileName(), + TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), + TemplateFileEnum.ACL.getTempFileName(), + TemplateFileEnum.ACL_IMPL.getTempFileName(), + TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), + TemplateFileEnum.DOBO_CONVERT.getTempFileName(), + TemplateFileEnum.MESSAGE_BODY.getTempFileName(), + TemplateFileEnum.EVENT_BODY.getTempFileName(), + TemplateFileEnum.ACL_PARAM.getTempFileName(), + TemplateFileEnum.MQ_CONSUMER.getTempFileName(), + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MQ_LISTENER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.CACHE.getTempFileName(), + TemplateFileEnum.CORE_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + + )), + + + /** + * + */ + COLA_FEIGN_API("cola","cola-feignapi", Sets.newHashSet( + TemplateFileEnum.FEIGN.getTempFileName(), + TemplateFileEnum.FEIGN_DDD.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.API_ENUM.getTempFileName(), + TemplateFileEnum.FEIGN_API_POM.getTempFileName(), + + GlobalConstant.SINGLE_CLASS_COMMON + )), + + /** + * + */ + COLA_ADAPTER("cola","cola-adapter", Sets.newHashSet( + TemplateFileEnum.CONTROLLER.getTempFileName(), + //TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), + TemplateFileEnum.VO.getTempFileName(), + TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), + TemplateFileEnum.VOBO_CONVERT.getTempFileName(), + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.VO_DDD.getTempFileName(), + TemplateFileEnum.ADAPTER_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + + )), + + /** + * + */ + COLA_DOMAIN("cola","cola-domain", Sets.newHashSet( + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), + TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.GATAWAY.getTempFileName(), + TemplateFileEnum.FACTORY.getTempFileName(), + TemplateFileEnum.REPOSITORY.getTempFileName(), + TemplateFileEnum.VALUE_OBJECT.getTempFileName(), + TemplateFileEnum.MESSAGE_BODY.getTempFileName(), + TemplateFileEnum.EVENT_BODY.getTempFileName(), + TemplateFileEnum.ENUM.getTempFileName(), + TemplateFileEnum.DOMAIN_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON, + TemplateFileEnum.SERVICE_DDD.getTempFileName() + + )), + /** + * + */ + COLA_CLIENT("cola","cola-client", Sets.newHashSet( + TemplateFileEnum.DTO.getTempFileName(), + TemplateFileEnum.DTO_DDD.getTempFileName(), + TemplateFileEnum.FACADE.getTempFileName(), + TemplateFileEnum.FACADE_DDD.getTempFileName(), + TemplateFileEnum.API_ENUM.getTempFileName(), + TemplateFileEnum.ENUM.getTempFileName(), + TemplateFileEnum.CLIENT_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + )), + + /** + * + */ + COLA_INFRAST("cola","cola-infrast", Sets.newHashSet( + TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), + TemplateFileEnum.REPOSITORY_IMPL.getTempFileName(), + TemplateFileEnum.MAPPER_XML.getTempFileName(), + TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.MAPPER.getTempFileName(), + TemplateFileEnum.MAPPER_DDD.getTempFileName(), + TemplateFileEnum.DATA_OBJECT.getTempFileName(), + TemplateFileEnum.DOBO_CONVERT.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL.getTempFileName(), + TemplateFileEnum.SERVICE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.ACL.getTempFileName(), + TemplateFileEnum.ACL_IMPL.getTempFileName(), + TemplateFileEnum.ACL_PARAM.getTempFileName(), + + TemplateFileEnum.CACHE.getTempFileName(), + + TemplateFileEnum.MQ_CONSUMER.getTempFileName(), + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.INFRAST_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + )), + + /** + * + */ + COLA_APP("cola","cola-app", Sets.newHashSet( + //todo test + //TemplateFileEnum.TEST.getTempFileName(), + + TemplateFileEnum.FACADE_IMPL.getTempFileName(), + TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName(), + TemplateFileEnum.CMD.getTempFileName(), + TemplateFileEnum.CONVERT.getTempFileName(), + TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), + TemplateFileEnum.EXE.getTempFileName(), + TemplateFileEnum.EXE_IMPL.getTempFileName(), + TemplateFileEnum.DTOBO_CONVERT.getTempFileName(), + TemplateFileEnum.MQ_LISTENER.getTempFileName(), + TemplateFileEnum.APP_POM.getTempFileName(), + GlobalConstant.SINGLE_CLASS_COMMON + )), + + + /** + * + */ + COLA_API_DOC("cola","api-doc", Sets.newHashSet( + TemplateFileEnum.API_HTTP.getTempFileName(), + TemplateFileEnum.PARENT_POM.getTempFileName(), + TemplateFileEnum.API_RPC.getTempFileName() + )), + + /** + * + */ + COLA_START("cola","cola-start", Sets.newHashSet( + TemplateFileEnum.START_POM.getTempFileName(), + TemplateFileEnum.TEST_DDD.getTempFileName(), + + GlobalConstant.SINGLE_CLASS_COMMON + )), + + + /** + * + */ + DUBBO_API_DOC("dubbo","api-doc", Sets.newHashSet( + TemplateFileEnum.API_RPC.getTempFileName(), + TemplateFileEnum.PARENT_POM.getTempFileName() + + )), + + /** + * + */ + SPRINGBOOT_API_DOC("springboot","api-doc", Sets.newHashSet( + TemplateFileEnum.API_HTTP.getTempFileName(), + TemplateFileEnum.PARENT_POM.getTempFileName() + + )), + + /** + * + */ + SC_API_DOC("springcloud","api-doc", Sets.newHashSet( + TemplateFileEnum.API_HTTP.getTempFileName(), + TemplateFileEnum.API_RPC.getTempFileName(), + TemplateFileEnum.PARENT_POM.getTempFileName() + + )), + + ; + private String appName; + private String moduleName; + private Set templateFileSet; + ModuleEnum(String appName, String moduleName, Set templateFileSet){ + this.appName = appName; + this.moduleName = moduleName; + this.templateFileSet = templateFileSet; + } + + public String getAppName() { + return appName; + } + + public String getModuleName() { + return moduleName; + } + + public Set getTemplateFileSet() { + return templateFileSet; + } + + /** + * 增加自定义代码元素 + */ + public static void addCustomTemplateFile(String appName,String moduleName, String templateCode){ + String module = appName + "-" + moduleName; + for (ModuleEnum moduleEnum : ModuleEnum.values()){ + if(moduleEnum.getAppName().equals(appName) && moduleEnum.getModuleName().equals(module)){ + moduleEnum.getTemplateFileSet().add(templateCode); + } + } + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/TemplateFileEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/TemplateFileEnum.java new file mode 100644 index 0000000..5af808e --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/TemplateFileEnum.java @@ -0,0 +1,168 @@ +package com.tianhua.codemaker.enums; + +/** + * description: TemplateFileEnum
+ * date: 2020/7/7 23:44
+ * author: coderman
+ * version: 1.0
+ * 设置要生成的模板文件的类型 + */ +public enum TemplateFileEnum { + ENTITY("entity","dao.dataobject",".java","infrast"), + MAPPER("mapper","dao.mapper",".java","infrast"), + POM("pom","",".xml","resources"), + CONTROLLER("controller","controller",".java","adapter"), + MAPPER_XML("mapperxml","",".xml","resource"), + SERVICE("service","service",".java","app,domain"), + SERVICE_DDD("serviceddd","service",".java","app,domain"), + SERVICE_IMPL_DDD("serviceimplddd","serviceimpl",".java","app,domain,infrast"), + SERVICE_IMPL("serviceImpl","serviceimpl",".java","app,domain,infrast"), + VO("vo","vo",".java","adapter"), + BASE_CONTROLLER("baseController","",".java","adapter"), + SPRING_APPLICATION_CONTEXT("SpringApplicationContext","",".java","support"), + TEST("test","",".java","test"), + TEST_DDD("testddd","",".java","test"), + APPLICATION("application","",".java","start"), + DTO("dto","api.dto",".java","client,feignapi,api"), + FACADE("facade","api.facade",".java","client,api"), + DATA_OBJECT("do","dao.dataobject",".java","infrast"), + FACADE_IMPL("facadeImpl","facadeimpl",".java","app"), + BUSINESS_OBJECT("bo","bo",".java","domain"), + CONVERT("convert","convert",".java","adapter,app,infrast"), + DTOBO_CONVERT("dtoboconvert","convert",".java","app"), + DTO2DTO_CONVERT("dto2dtoconvert","convert",".java","app"), + DOBO_CONVERT("doboconvert","convert",".java","infrast"), + FACADE_AOP("facadeaop","",".java","app"), + GATAWAY("gataway","gataway",".java","domain"), + REPOSITORY("repository","repository",".java","domain"), + REPOSITORY_IMPL("repositoryimpl","repositoryimpl",".java","infrast"), + FACTORY("factory","factory",".java","app,domain,infrast"), + ENUM("enum","enum",".java","domain,client"), + API_ENUM("apienum","api.enum",".java","api,feignapi"), + MESSAGE_BODY("msgbody","bo.msgbody",".java","domain"), + EVENT_BODY("event","bo.event",".java","domain"), + GATAWAY_IMPL("gatawayimpl","repositoryimpl",".java","infrast"), + ACL("acl","acl",".java","infrast"), + ACL_IMPL("aclimpl","acl.aclimpl",".java","infrast"), + ACL_REQ("aclreq","acl.param.req",".java","infrast"), + ACL_RES("aclres","acl.param.res",".java","infrast"), + ACL_PARAM("aclparam","acl.param",".java","infrast"), + CMD("cmd","command",".java","app"), + EXE("exe","executor",".java","app"), + EXE_IMPL("exeimpl","exeimpl",".java","app"), + EXE_ABSTRACT("abstractexe","executor",".java","app"), + VALUE_OBJECT("valueobject","bo.valueobject",".java","domain"), + BUSINESS_OBJECT_DDD("boddd","bo",".java","domain"), + FACADE_DDD("facadeddd","api.facade",".java","client,api"), + FACADE_IMPL_DDD("facadeimplddd","facadeimpl",".java","client,api"), + CONTROLLER_DDD("controllerddd","adapter.controller",".java","adapter,feignprovider"), + VO_DDD("voddd","adapter.vo",".java","adapter"), + VOBO_CONVERT("voboconvert","convert",".java","adapter"), + DTO_DDD("dtoddd","api.dto",".java","client,api"), + MQ_CONSUMER("mqconsumer","mq.consumer",".java","infrast"), + MQ_HANDLER("mqhandler","mq.handler",".java","infrast"), + MQ_LISTENER("mqlistener","mq.listener",".java","infrast"), + MQ_PRODUCER("mqproducer","mq.producer",".java","infrast"), + APP_EVENT_PUBLISHER("AppEventPublisher","",".java","domain"), + BASE_EVENT("BaseEvent","",".java",""), + MAPPER_DDD("mapperddd","dao.mapper",".java","infrast"), + MAPPER_XML_DDD("mapperxmlddd","",".xml","resources"), + API_HTTP("http","http",".md","api-doc"), + API_RPC("rpc","rpc",".md","api-doc"), + SQL("sql","sql",".sql","sql-doc"), + CACHE("cache","cache",".java","infrast"), + + FEIGN("feign","api.feign",".java","feignapi"), + FEIGN_DDD("feignddd","api.feign",".java","feignapi"), + FEIGN_CONTROLLER("feigncontroller","api.feign.controller",".java","feignprovider"), + FEIGN_CONTROLLER_DDD("feigncontrollerddd","api.feign.controller",".java","feignprovider"), + + + CLIENT_POM("clientpom","",".xml","client"), + DOMAIN_POM("domainpom", "",".xml","domain"), + INFRAST_POM("infrastpom","",".xml","infrast"), + API_POM("apipom","",".xml","api"), + CORE_POM("corepom","",".xml","core"), + COMMON_POM("commonpom","",".xml","common"), + APP_POM("apppom","",".xml","app"), + PARENT_POM("parentpom","",".xml","parent"), + START_POM("startpom","",".xml","start"), + ADAPTER_POM("adapterpom","",".xml","adapter"), + FEIGN_API_POM("feignapipom","",".xml","feignapi"), + PROVIDER_POM("providerpom","",".xml","provider"), + + ; + private String tempFileName; + /** + * 最后一级子包名,也是代码元素别名 + */ + private String childPackageName; + + /** + * 类后缀 + */ + private String classSuffix; + + /** + * 所属层 + * todo + */ + private String layerCodes; + + TemplateFileEnum(String tempFileName, String childPackageName, String classSuffix, String layerCodes){ + this.tempFileName = tempFileName; + this.childPackageName = childPackageName; + this.classSuffix = classSuffix; + this.layerCodes = layerCodes; + } + + public String getTempFileName() { + return tempFileName; + } + + public String getChildPackageName() { + return childPackageName; + } + + public String getClassSuffix() { + return classSuffix; + } + + /** + * 判断类名是否是bo,vo,dto,entity + * @param className + * @return + */ + public static boolean isClassModel(String className){ + String classType = className.toLowerCase(); + return classType.endsWith(TemplateFileEnum.VO.getTempFileName()) + || classType.endsWith(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName()) + || classType.endsWith(TemplateFileEnum.DTO.getTempFileName()) + || classType.endsWith(TemplateFileEnum.DATA_OBJECT.getTempFileName()) + || classType.endsWith(TemplateFileEnum.ENTITY.getTempFileName()); + } + + public static String getChildPackageName(String templateCode){ + for (TemplateFileEnum templateFileEnum : TemplateFileEnum.values()){ + if(templateFileEnum.getTempFileName().equals(templateCode)){ + return templateFileEnum.getChildPackageName(); + } + } + return templateCode; + } + + + /** + * 获取模板文件名后缀 + * @param templateCode + * @return + */ + public static String getClassSuffix(String templateCode){ + for (TemplateFileEnum templateFileEnum : TemplateFileEnum.values()){ + if(templateFileEnum.getTempFileName().equals(templateCode)){ + return templateFileEnum.getClassSuffix(); + } + } + return null; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/VisibilityEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/VisibilityEnum.java new file mode 100644 index 0000000..b724791 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/VisibilityEnum.java @@ -0,0 +1,57 @@ +package com.tianhua.codemaker.enums; + +/** + * Description: + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum VisibilityEnum { + + PRIVATE("private","-"), + PROTECT("protected","#"), + PUBLIC("public","+"), + PACKAGE_PRIVATE("package private","~"), + ; + private String visibility; + private String tag; + VisibilityEnum(String visibility, String tag){ + this.visibility = visibility; + this.tag = tag; + } + + public String getVisibility() { + return visibility; + } + + public String getTag() { + return tag; + } + + /** + * 获取修饰符 + * @param content + * @return + */ + public static String getVisibilityStr(String content) { + if (content.startsWith(VisibilityEnum.PUBLIC.tag)) { + return VisibilityEnum.PUBLIC.visibility; + } + + if (content.startsWith(VisibilityEnum.PRIVATE.tag)) { + return VisibilityEnum.PRIVATE.visibility; + } + + if (content.startsWith(VisibilityEnum.PROTECT.tag)) { + return VisibilityEnum.PROTECT.visibility; + } + + if (content.startsWith(VisibilityEnum.PACKAGE_PRIVATE.tag)) { + return VisibilityEnum.PACKAGE_PRIVATE.visibility; + } + return VisibilityEnum.PRIVATE.visibility; + } + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/AnnotationModifyOnEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/AnnotationModifyOnEnum.java new file mode 100644 index 0000000..d384dca --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/AnnotationModifyOnEnum.java @@ -0,0 +1,36 @@ +package com.tianhua.codemaker.enums.dynamic; + +/** + * Description:动态注解需要修饰的类型 + * date: 2021/10/16 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum AnnotationModifyOnEnum { + THIS("this", "当前类"), + CHILD("child", "子类"), + ; + private String code; + private String desc; + + + AnnotationModifyOnEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/DecorateTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/DecorateTypeEnum.java new file mode 100644 index 0000000..563dca8 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/DecorateTypeEnum.java @@ -0,0 +1,37 @@ +package com.tianhua.codemaker.enums.dynamic; + +/** + * Description: + * date: 2021/11/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum DecorateTypeEnum { + CLASS_ANNOTATION("CLASS_ANNOTATION","类上加注解"), + CLASS_IMPL_INTERFACE("CLASS_IMPL","类加上实现接口"), + + METHOD_ANNOTATION("METHOD_ANNOTATION","方法上加注解"), + METHOD_RETURN_CLASS("METHOD_RETURN_CLASS","方法返回值类包装"), + METHOD_RETURN_PAGEDTO_CLASS("METHOD_RETURN_PAGEDTO_CLASS","方法分页类包装"), + + METHOD_RETURN_PAGEVO_CLASS("METHOD_RETURN_PAGEVO_CLASS","方法分页类包装"), + + ; + + private String code; + private String desc; + DecorateTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeLayerTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeLayerTypeEnum.java new file mode 100644 index 0000000..62bae6b --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeLayerTypeEnum.java @@ -0,0 +1,120 @@ +package com.tianhua.codemaker.enums.dynamic; + +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.google.common.collect.Sets; + +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Description: 调用层有哪些调用入口枚举 + * date: 2021/10/16 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum InvokeLayerTypeEnum { + APP_RPC("app_rpc", Sets.newHashSet(TemplateFileEnum.FACADE.getTempFileName(), + TemplateFileEnum.EXE.getTempFileName(), + TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), + TemplateFileEnum.EXE_IMPL.getTempFileName(), + TemplateFileEnum.MQ_LISTENER.getTempFileName(), + "app_rpc" + )), + + APP_HTTP("app_http", Sets.newHashSet( + TemplateFileEnum.CONTROLLER.getTempFileName(), + "app_http") + ), + + DOMAIN("domain", Sets.newHashSet( + TemplateFileEnum.GATAWAY.getTempFileName(), + TemplateFileEnum.REPOSITORY.getTempFileName(), + TemplateFileEnum.SERVICE.getTempFileName(), + TemplateFileEnum.FACTORY.getTempFileName(), + "domain" + )), + INFRAST("infrast", Sets.newHashSet( + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MAPPER.getTempFileName(), + DomainElementEnum.ADAPTER.getElement(), + TemplateFileEnum.MQ_PRODUCER.getTempFileName(), + TemplateFileEnum.MQ_HANDLER.getTempFileName(), + TemplateFileEnum.MQ_CONSUMER.getTempFileName(), + "infrast" + )), + + ACL_API("aclapi",Sets.newHashSet("aclapi")) + + ; + private String code; + private Set classTypeSet; + InvokeLayerTypeEnum(String code, Set classTypeSet){ + this.code = code; + this.classTypeSet = classTypeSet; + } + + + public String getCode() { + return code; + } + + public Set getClassTypeSet() { + return classTypeSet; + } + + /** + * 根据类名获取类所在层 + * @param className + * @return + */ + public static String getLayerCode(String className){ + AtomicReference layerName = new AtomicReference<>(""); + for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ + layerTypeEnum.getClassTypeSet().forEach(classType->{ + if(className.toLowerCase().endsWith(classType)){ + layerName.set(layerTypeEnum.code); + } + }); + } + return layerName.get(); + } + + + + /** + * 根据类名获取类所在层 + * @param invokeLayerStr + * @return + */ + public static String getInvokeLayerCode(String invokeLayerStr){ + AtomicReference layerName = new AtomicReference<>(""); + for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ + layerTypeEnum.getClassTypeSet().forEach(classType->{ + if(invokeLayerStr.toLowerCase().startsWith(classType)){ + layerName.set(layerTypeEnum.code); + } + }); + } + return layerName.get(); + } + + /** + * 根据类名获取类所在层 + * @param invokeLayerStr + * @return + */ + public static String getProvideLayerCode(String invokeLayerStr){ + AtomicReference layerName = new AtomicReference<>(""); + for (InvokeLayerTypeEnum layerTypeEnum : InvokeLayerTypeEnum.values()){ + layerTypeEnum.getClassTypeSet().forEach(classType->{ + if(invokeLayerStr.toLowerCase().endsWith(classType)){ + layerName.set(layerTypeEnum.code); + } + }); + } + return layerName.get(); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeSceneTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeSceneTypeEnum.java new file mode 100644 index 0000000..90bca05 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/InvokeSceneTypeEnum.java @@ -0,0 +1,137 @@ +package com.tianhua.codemaker.enums.dynamic; + +import org.apache.commons.lang3.StringUtils; + +/** + * Description:调用场景枚举 + * date: 2021/10/16 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum InvokeSceneTypeEnum { + + APP_RPC_TO_DOMAIN("app_rpc2domain","应用层->领域层"), + APP_HTTP_TO_DOMAIN("app_http2domain","应用层->领域层"), + APP_RPC_TO_SELF("app_rpc2self","应用层->应用层"), + APP_HTTP_TO_SELF("app_http2self","应用层->应用层"), + APP_RPC_TO_INFRAST("app_rpc2infrast","应用层->基础设施层"), + APP_HTTP_TO_INFRAST("app_http2infrast","应用层->基础设施层"), + + DOMAIN_TO_INFRAST("domain2infrast","领域层->基础设施层"), + DOMAIN_TO_SELF("domain2self","领域层->领域层"), + + INFRAST_TO_SELF("infrast2self","基础设施层->依赖服务"), + INFRAST_TO_API("infrast2api","基础设施层->依赖服务层"), + + ; + private String code; + private String desc; + InvokeSceneTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + + /** + * 根据调用类和被调用类判断调用场景 + * @param invokeClassName + * @param providerClassName + * @return + */ + public static String getInvokeScene(String invokeClassName,String providerClassName){ + String invokerLayer = InvokeLayerTypeEnum.getLayerCode(invokeClassName); + String providerLayer = InvokeLayerTypeEnum.getLayerCode(providerClassName); + //这里增加一个infrast 到下游调用方的调用层类型判断 + if(invokerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode()) && StringUtils.isEmpty(providerLayer)){ + return InvokeSceneTypeEnum.INFRAST_TO_API.code; + } + if(StringUtils.isEmpty(invokerLayer) || StringUtils.isEmpty(providerLayer)){ + return null; + } + + for (InvokeSceneTypeEnum invokeSceneTypeEnum : InvokeSceneTypeEnum.values()){ + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_RPC.getCode())){ + return InvokeSceneTypeEnum.APP_RPC_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_HTTP.getCode())){ + return InvokeSceneTypeEnum.APP_HTTP_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.DOMAIN.getCode())){ + return InvokeSceneTypeEnum.DOMAIN_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode())){ + return InvokeSceneTypeEnum.INFRAST_TO_SELF.getCode(); + } + + if(invokeSceneTypeEnum.getCode().contains(invokerLayer) && invokeSceneTypeEnum.getCode().contains(providerLayer)){ + return invokeSceneTypeEnum.getCode(); + } + } + + + return null; + } + + /** + * 根据调用方向判断调用场景 + * @param invokeSceneStr + * @param + * @return + */ + public static String getInvokeSceneV2(String invokeSceneStr){ + + String invokerLayer = InvokeLayerTypeEnum.getInvokeLayerCode(invokeSceneStr); + String providerLayer = InvokeLayerTypeEnum.getProvideLayerCode(invokeSceneStr); + + if(invokerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode()) && StringUtils.isEmpty(providerLayer)){ + return InvokeSceneTypeEnum.INFRAST_TO_API.code; + } + + + + if(StringUtils.isEmpty(invokerLayer) || StringUtils.isEmpty(providerLayer)){ + return null; + } + + for (InvokeSceneTypeEnum invokeSceneTypeEnum : InvokeSceneTypeEnum.values()){ + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_RPC.getCode())){ + return InvokeSceneTypeEnum.APP_RPC_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.APP_HTTP.getCode())){ + return InvokeSceneTypeEnum.APP_HTTP_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.DOMAIN.getCode())){ + return InvokeSceneTypeEnum.DOMAIN_TO_SELF.getCode(); + } + + if(invokerLayer.equals(providerLayer) && providerLayer.equals(InvokeLayerTypeEnum.INFRAST.getCode())){ + return InvokeSceneTypeEnum.INFRAST_TO_SELF.getCode(); + } + + if(invokeSceneTypeEnum.getCode().contains(invokerLayer) && invokeSceneTypeEnum.getCode().contains(providerLayer)){ + return invokeSceneTypeEnum.getCode(); + } + } + + + return null; + } + + +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/ReadWriteTypeEnum.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/ReadWriteTypeEnum.java new file mode 100644 index 0000000..99cd92d --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/enums/dynamic/ReadWriteTypeEnum.java @@ -0,0 +1,155 @@ +package com.tianhua.codemaker.enums.dynamic; + +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; + +import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Description:读写类型枚举 + * date: 2021/10/16 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public enum ReadWriteTypeEnum { + READ("read","读场景"), + WRITE("write","写场景"), + INSERT("insert","插入"), + UPDATE("update","更新"), + DELETE("delete","删除"), + ; + private String code; + private String desc; + + //支持业务领域动词注册功能 + private static Set readSet = Sets.newHashSet("search","get","find","select","load","read","query","export"); + + private static Set writeSet = Sets.newHashSet("write","regist","update","create","save","insert","delete","init","import"); + + + private static Set insertSet = Sets.newHashSet("batchinsert","insertbatch","savebatch","save","batchsave"); + + private static Set updateSet = Sets.newHashSet("batchupdate","updatebatch","update"); + + private static Set deleteSet = Sets.newHashSet("deletebatch","batchdelete","update"); + + ReadWriteTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + + /** + * 根据方法名判断方法的读写属性 + * @param methodName + * @return + */ + public static String getCodeByMethod(String methodName){ + AtomicReference code = new AtomicReference<>(""); + readSet.stream().forEach(v->{ + if(methodName.toLowerCase().startsWith(v)){ + code.set(ReadWriteTypeEnum.READ.getCode()); + } + }); + if(StringUtils.isNotEmpty(code.get())){ + return code.get(); + } + writeSet.stream().forEach(v->{ + if(methodName.toLowerCase().startsWith(v)){ + code.set(ReadWriteTypeEnum.WRITE.getCode()); + } + }); + return code.get(); + } + + + /** + * 判断是否是保存 + * @param methodName + * @return + */ + public static boolean isInsert(String methodName){ + AtomicReference insertTag = new AtomicReference<>(false); + insertSet.stream().forEach(v->{ + if(methodName.toLowerCase().startsWith(v)){ + insertTag.set(true); + } + }); + return insertTag.get(); + } + + /** + * 判断是否是更新 + * @param methodName + * @return + */ + public static boolean isUpdate(String methodName){ + AtomicReference insertTag = new AtomicReference<>(false); + updateSet.stream().forEach(v->{ + if(methodName.toLowerCase().startsWith(v)){ + insertTag.set(true); + } + }); + return insertTag.get(); + } + + /** + * 判断是否是删除 + * @param methodName + * @return + */ + public static boolean isDelete(String methodName){ + AtomicReference insertTag = new AtomicReference<>(false); + deleteSet.stream().forEach(v->{ + if(methodName.toLowerCase().startsWith(v)){ + insertTag.set(true); + } + }); + return insertTag.get(); + } + + /** + * 根据方法名推导出可能的属性 + * 先对 read场景推导 + * @return + */ + public static String getSomeFieldFromMethodName(String methodName){ + final String[] tempMethodName = {methodName}; + readSet.forEach(read->{ + tempMethodName[0] = tempMethodName[0].replace(read,""); + }); + String fieldName = tempMethodName[0].replace("By",""); + if(!StringUtils.isEmpty(fieldName)){ + return fieldName; + } + return null; + } + + /** + * 将自定义的读操作统一语言注册到默认的读操作定义集合中 + * @param readDslSet + */ + public static void putReadDSL(Set readDslSet){ + readSet.addAll(readDslSet); + } + + /** + * 将自定义的读操作统一语言注册到默认的写操作定义集合中 + * @param writeDslSet + */ + public static void putWriteDSL(Set writeDslSet){ + writeSet.addAll(writeDslSet); + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/service/ImportPackageService.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/service/ImportPackageService.java new file mode 100644 index 0000000..55cc334 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/service/ImportPackageService.java @@ -0,0 +1,58 @@ +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; + +/** + * Description: + * date: 2022/1/26 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface ImportPackageService { + + /** + * 处理需要导入的包 + * + * @param abstractClassBean + * @param plantUmlContextBean + */ + void dealImportClass(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean); + + + /** + * 设置包名 + * + * @param abstractClassBean + * @param defaultChildPackage 当plantUML中没有包名则使用配置的全局包名+子包名 + */ + void setPackageName(AbstractClassBean abstractClassBean, String defaultChildPackage); + + + /** + * 在动态调用中处理引用包 + * + * @param invokerClassBean + * @param plantUmlContextBean + * @param importClassName + */ + void dealImportPackage(AbstractClassBean invokerClassBean, PlantUmlContextBean plantUmlContextBean, String importClassName); + + + String getMatchPackageDefault(String targetClass); + + + /** + * 设置包名 + * @param abstractClassBean + * @param moduleTag 当前类元素所在模块 + * 返回的包路径简化为 + * 全局包路径+模块标示+plantUMLPackage + */ + public void setPackageNameWithModule(AbstractClassBean abstractClassBean, String moduleTag); + + +} + diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHandleUtils.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHandleUtils.java new file mode 100644 index 0000000..c183ca2 --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHandleUtils.java @@ -0,0 +1,133 @@ +package com.tianhua.codemaker.utils; + +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; + +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Description: + * date: 2021/10/12 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class StringHandleUtils { + + private static Set basicTypeSet = Sets.newHashSet("Integer","int" + ,"long","Long" + ,"String", + "Float","float", + "Boolean","boolean", + "Short","short" + ,"Double","double","[]","Object"); + + /** + * 严格基本数据类型 + */ + private static Set strictBasicTypeSet = Sets.newHashSet("int" + ,"long" + ,"float" + ,"boolean" + ,"short" + ,"double"); + + + /** + * 判断字符串中是否包含中文 + * @param str + * 待校验字符串 + * @return 是否为中文 + * @warn 不能校验是否为中文标点符号 + */ + public static boolean isContainChinese(String str) { + Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); + Matcher m = p.matcher(str); + if (m.find()) { + return true; + } + return false; + } + + /** + * 通过变量类型获取变量对应的变量名 + * @param paramType + * @return + */ + public static String getParamVar(String paramType){ + if(StringUtils.isEmpty(paramType.trim())){ + return "null"; + } + if(paramType.contains("List<")){ + String paramModel = paramType.trim().replace("List<","").replace(">",""); + return paramModel.trim().substring(0,1).toLowerCase()+paramModel.substring(1)+"List"; + } + if(paramType.contains("Set<")){ + String paramModel = paramType.trim().replace("List<","").replace(">",""); + return paramModel.trim().substring(0,1).toLowerCase()+paramModel.substring(1)+"Set"; + } + + return paramType.trim().substring(0,1).toLowerCase()+paramType.substring(1); + } + + /** + * 判断参数是不是基本类型 + * @param paramType + * @return + */ + public static boolean isBasicType(String paramType){ + AtomicBoolean basicType = new AtomicBoolean(false); + basicTypeSet.forEach(str->{ + if(paramType.contains(str)){ + basicType.set(true); + } + }); + return basicType.get(); + } + + /** + * 判断参数是不是严格的基本类型 + * @param paramType + * @return + */ + public static boolean isStrictBasicType(String paramType){ + AtomicBoolean basicType = new AtomicBoolean(false); + strictBasicTypeSet.forEach(str->{ + if(paramType.contains(str)){ + basicType.set(true); + } + }); + return basicType.get(); + } + + + /** + * 将返回参数包装类型去掉 + * Result + * ResultDto + * ResultDataDto + * SdkResponse + * Response + * ResultDto + * ResultDto> + * SdkResponse + * @param paramType + * @return + */ + public static String getParamTypeNoWrapper(String paramType){ + boolean wrapper = paramType.contains("Result") || paramType.equals("Response"); + //如果是包装类型,但是却没有范型声明则返回null + if(wrapper){ + if(!paramType.contains("<")){ + return null; + } + String result = paramType.substring(paramType.indexOf("<")+1); + return result.substring(0,result.length() - 1); + } + return paramType; + } +} diff --git a/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHelperUtils.java b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHelperUtils.java new file mode 100644 index 0000000..6b77cbd --- /dev/null +++ b/codemaker-parent/codemaker-api/src/main/java/com/tianhua/codemaker/utils/StringHelperUtils.java @@ -0,0 +1,88 @@ +package com.tianhua.codemaker.utils; + +import java.util.regex.Pattern; + +/** + * Description: + * date: 2021/10/21 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class StringHelperUtils { + + private static Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + + + /** + * 根据表名获取对应类名 + * @param tableName + * @return + */ + public static String getClassDOName(String tableName){ + String humpTableName = getHumpTableName(tableName); + return getHumpClassName(humpTableName); + } + + /** + * 获取表名对应的类名 + * eg: user_info->UserInfo + * staff_education_info->StaffEducationInfo + * + * @param humpTableName + * @return + */ + public static String getHumpClassName(String humpTableName){ + String resultName = humpTableName.substring(0,1).toUpperCase().concat(humpTableName.substring(1)); + return resultName; + } + + /** + * 获取表名对应的变量名 + * eg: user_info->userInfo + * staff_education_info->staffEducationInfo + * + * @param tableName + * @return + */ + private static String getHumpTableName(String tableName){ + String resultName = ""; + + if(!tableName.contains("_")){ + resultName = tableName; + }else { + String[] tableNameArr = tableName.split("_"); + int length = tableNameArr.length; + StringBuilder builder = new StringBuilder(); + + if(isNum(tableNameArr[length - 1])){ + if(length == 2){ + resultName = tableNameArr[0]; + }else { + builder.append(tableNameArr[0]); + for (int i = 1;i < length - 1;i++){ + String tag = tableNameArr[i].substring(0,1).toUpperCase().concat(tableNameArr[i].substring(1)); + builder.append(tag); + } + resultName = builder.toString(); + } + }else { + builder.append(tableNameArr[0]); + for (int i = 1;i < length;i++){ + String tag = tableNameArr[i].substring(0,1).toUpperCase().concat(tableNameArr[i].substring(1)); + builder.append(tag); + } + resultName = builder.toString(); + } + + } + return resultName; + } + + + private static boolean isNum(String str){ + return pattern.matcher(str).matches(); + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleNodeCmpDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleNodeCmpDecorateHandler.java new file mode 100644 index 0000000..55afc76 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleNodeCmpDecorateHandler.java @@ -0,0 +1,45 @@ +package com.tianhua.codemaker.custom.decorate.liteflow; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * Description: NodeComponent代码元素包装 + * date: 2021/11/26 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "eleNodeCmpDecorateHandler") +public class EleNodeCmpDecorateHandler implements ElementDecorateHandler { + private static final String NODE_COMPONENT = "NodeComponent"; + + @Override + public void decorateElement(Map classCompMap, PlantUmlContextBean plantUmlContextBean) { + AbstractClassBean nodeCompClassBean = classCompMap.get(NODE_COMPONENT); + if (nodeCompClassBean != null) { + decorateNodeComponent(nodeCompClassBean, plantUmlContextBean); + } + } + /** + * 装饰SlotBO类 + * @param abstractClassBean + * @param plantUmlContextBean + */ + private void decorateNodeComponent(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean) { + plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { + if (k.toLowerCase().endsWith("cmp")) { + //继承liteflow的NodeComponent类 + v.setRelationClassStr(" extends " + NODE_COMPONENT); + v.addImportClass(abstractClassBean.getPackageName()); + v.setMethodBeanList(abstractClassBean.getMethodBeanList()); + + } + }); + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleSlotBODecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleSlotBODecorateHandler.java new file mode 100644 index 0000000..0d10552 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/EleSlotBODecorateHandler.java @@ -0,0 +1,46 @@ +package com.tianhua.codemaker.custom.decorate.liteflow; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * Description: slotBO代码元素包装 + * date: 2021/11/26 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "eleSlotBODecorateHandler") +public class EleSlotBODecorateHandler implements ElementDecorateHandler { + private static final String ABS_SLOT = "AbsSlot"; + + @Override + public void decorateElement(Map classCompMap, PlantUmlContextBean plantUmlContextBean) { + AbstractClassBean slotClassBean = classCompMap.get(ABS_SLOT); + if (slotClassBean != null) { + decorateSlotBO(slotClassBean, plantUmlContextBean); + } + } + + /** + * 装饰SlotBO类 + * @param abstractClassBean + * @param plantUmlContextBean + */ + private void decorateSlotBO(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean) { + plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { + if (k.toLowerCase().endsWith("slotbo")) { + //继承liteflow的AbsSlot类 + v.setRelationClassStr(" extends " + ABS_SLOT); + v.addImportClass(abstractClassBean.getPackageName()); + } + }); + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/ElementDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/ElementDecorateHandler.java similarity index 68% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/ElementDecorateHandler.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/ElementDecorateHandler.java index b2293c7..17699b5 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/ElementDecorateHandler.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/ElementDecorateHandler.java @@ -1,7 +1,7 @@ -package com.coderman.codemaker.element; +package com.tianhua.codemaker.element; -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; import java.util.Map; @@ -9,7 +9,7 @@ import java.util.Map; * Description:代码元素装饰处理器,抽象接口 * date: 2021/11/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleControllerDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleControllerDecorateHandler.java similarity index 91% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleControllerDecorateHandler.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleControllerDecorateHandler.java index 62bea35..575c902 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleControllerDecorateHandler.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleControllerDecorateHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.element.impl; - -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.constant.ApiConstant; -import com.coderman.codemaker.constant.ArchConstant; -import com.coderman.codemaker.constant.ArchSpringConstant; -import com.coderman.codemaker.element.ElementDecorateHandler; -import com.coderman.codemaker.enums.ModuleEnum; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.dynamic.DecorateTypeEnum; +package com.tianhua.codemaker.element.impl; + +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.constant.ApiConstant; +import com.tianhua.codemaker.constant.ArchConstant; +import com.tianhua.codemaker.constant.ArchSpringConstant; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.ModuleEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.dynamic.DecorateTypeEnum; import org.springframework.stereotype.Component; import java.util.Map; @@ -17,7 +17,7 @@ import java.util.Optional; * Description: controller代码元素包装 * date: 2021/11/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -56,9 +56,6 @@ public class EleControllerDecorateHandler implements ElementDecorateHandler { decorateController(requestParamBean, plantUmlContextBean, DecorateTypeEnum.METHOD_ANNOTATION); } - - - //如果applicationType=springcloud则对controller进行实现接口包装 if (plantUmlContextBean.getApplicationType().equals(ModuleEnum.SC_FEIGN_API.getAppName())) { decorateControllerImpl(plantUmlContextBean); diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFacadeDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFacadeDecorateHandler.java similarity index 88% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFacadeDecorateHandler.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFacadeDecorateHandler.java index dbcd410..cafc5c0 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFacadeDecorateHandler.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFacadeDecorateHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.element.impl; +package com.tianhua.codemaker.element.impl; -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.constant.ApiConstant; -import com.coderman.codemaker.constant.ArchConstant; -import com.coderman.codemaker.element.ElementDecorateHandler; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.dynamic.DecorateTypeEnum; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.constant.ApiConstant; +import com.tianhua.codemaker.constant.ArchConstant; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.dynamic.DecorateTypeEnum; import org.springframework.stereotype.Component; import java.util.Map; @@ -17,7 +17,7 @@ import java.util.Optional; * Description: controller代码元素包装 * date: 2021/11/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFeignDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFeignDecorateHandler.java similarity index 87% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFeignDecorateHandler.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFeignDecorateHandler.java index 7b7bd54..92f69d4 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/element/impl/EleFeignDecorateHandler.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/element/impl/EleFeignDecorateHandler.java @@ -1,14 +1,13 @@ -package com.coderman.codemaker.element.impl; - -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.constant.ApiConstant; -import com.coderman.codemaker.constant.ArchConstant; -import com.coderman.codemaker.constant.ArchSpringConstant; -import com.coderman.codemaker.element.ElementDecorateHandler; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.dynamic.DecorateTypeEnum; +package com.tianhua.codemaker.element.impl; + +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.constant.ApiConstant; +import com.tianhua.codemaker.constant.ArchSpringConstant; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.dynamic.DecorateTypeEnum; import org.springframework.stereotype.Component; import java.util.Map; @@ -18,7 +17,7 @@ import java.util.Optional; * Description: controller代码元素包装 * date: 2021/11/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DubboAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DubboAppService.java new file mode 100644 index 0000000..8afd7d8 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DubboAppService.java @@ -0,0 +1,46 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.enums.ModuleEnum; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dubboAppService") +public class DubboAppService implements AppService{ + @Resource(name = "dubboCoreWriteFileService") + private IWriteFileService dubboCoreWriteFileService; + + @Resource(name = "dubboApiWriteFileService") + private IWriteFileService dubboApiWriteFileService; + + @Resource(name = "dubboCommonWriteFileService") + private IWriteFileService dubboCommonWriteFileService; + + + + @Resource(name = "dubboApiDocWriteFileService") + private IWriteFileService dubboApiDocWriteFileService; + + + @Override + public IWriteFileService getModelAppService(String moduleName) { + if(ModuleEnum.DUBBO_API.getModuleName().endsWith(moduleName)){ + return dubboApiWriteFileService; + } else if (ModuleEnum.DUBBO_COMMON.getModuleName().endsWith(moduleName)) { + return dubboCommonWriteFileService; + } + else if (ModuleEnum.DUBBO_API_DOC.getModuleName().endsWith(moduleName) || moduleName.equals(GlobalConstant.PARENT)) { + return dubboApiDocWriteFileService; + } + return dubboCoreWriteFileService; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DynamicDDDAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DynamicDDDAppService.java new file mode 100644 index 0000000..c51d4b6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/DynamicDDDAppService.java @@ -0,0 +1,24 @@ +package com.tianhua.codemaker.app; + +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dynamicDDDAppService") +public class DynamicDDDAppService implements AppService { + @Resource(name = "dynamicDDDWriteServiceImpl") + private IWriteFileService dynamicDDDWriteService; + + @Override + public IWriteFileService getModelAppService(String moduleName) { + return dynamicDDDWriteService; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java new file mode 100644 index 0000000..3e85899 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiDocWriteServiceImpl.java @@ -0,0 +1,42 @@ +package com.tianhua.codemaker.app.dubbo; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateDubboConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/6/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + * 写api模块服务 + */ +@Component(value = "dubboApiDocWriteFileService") +public class DubboApiDocWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateDubboConfig projectTemplateDubboConfig; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); + //写pom文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.PARENT_POM.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDubboConfig.getModuleParentPath()); + writePom(classContentBean); + } + + //写sql文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SQL.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDubboConfig.getModuleParentPath()); + writeSql(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiWriteServiceImpl.java new file mode 100644 index 0000000..5319684 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboApiWriteServiceImpl.java @@ -0,0 +1,44 @@ +package com.tianhua.codemaker.app.dubbo; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateDubboConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/6/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + * 写api模块服务 + */ +@Component(value = "dubboApiWriteFileService") +public class DubboApiWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateDubboConfig projectTemplateDubboConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "api"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateDubboConfig.getModuleApiPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java new file mode 100644 index 0000000..fb6fb87 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCommonWriteServiceImpl.java @@ -0,0 +1,49 @@ +package com.tianhua.codemaker.app.dubbo; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateDubboConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/6/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * 写持久层模块服务 + */ +@Component(value = "dubboCommonWriteFileService") +public class DubboCommonWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateDubboConfig projectTemplateDubboConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "common"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateDubboConfig.getModuleCommonPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java new file mode 100644 index 0000000..5395550 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dubbo/DubboCoreWriteServiceImpl.java @@ -0,0 +1,100 @@ +package com.tianhua.codemaker.app.dubbo; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.ProjectTemplateDubboConfig; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.utils.Constant; +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; + +/** + * Description: + * date: 2021/6/21 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dubboCoreWriteFileService") +public class DubboCoreWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateDubboConfig projectTemplateDubboConfig; + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "core"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateDubboConfig.getModuleCorePath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + } + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFile(ClassContentBean classContentBean) { + String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * @param childPackageName 最后一级子包名称 + * @param humpClassName 驼峰式类名 + * @param classSuffix 文件后缀 egg:DTO.java + * @return + */ + private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; + String fileName = humpClassName + classSuffix; + return projectTemplateDubboConfig.getModuleCorePath() + packagePath + "/" + fileName; + } + + /** + * 写测试文件 + * @param childPackageName + * @param humpClassName + * @param classSuffix + * @return + */ + public String getTestFilePath(String childPackageName, String humpClassName, String classSuffix) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + packagePath = Constant.TEST_JAVA + "/" + packagePath + childPackageName; + String fileName = humpClassName + classSuffix; + return projectTemplateDubboConfig.getModuleCorePath() + packagePath + "/" + fileName; + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java new file mode 100644 index 0000000..c569516 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/DynamicDDDWriteServiceImpl.java @@ -0,0 +1,114 @@ +package com.tianhua.codemaker.app.dynamicddd; + +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateDynamicDDDConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.app.IWriteFileService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dynamicDDDWriteServiceImpl") +public class DynamicDDDWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateDynamicDDDConfig projectTemplateDynamicDDDConfig; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateDynamicDDDConfig.getOutPath()); + + //写domain.bo + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName())){ + classContentBean.setChildPackageName("domain.bo"); + writeRoute(classContentBean); + } + + //写domain.valueobject + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.VALUE_OBJECT.getTempFileName())){ + classContentBean.setChildPackageName("domain.valueobject"); + writeRoute(classContentBean); + } + + //写domain.msgbody + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.MESSAGE_BODY.getTempFileName())){ + classContentBean.setChildPackageName("domain.msgbody"); + writeRoute(classContentBean); + } + + //写domain.event + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EVENT_BODY.getTempFileName())){ + classContentBean.setChildPackageName("domain.event"); + writeRoute(classContentBean); + } + + //写domain.gataway + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY.getTempFileName())){ + classContentBean.setChildPackageName("domain.gataway"); + writeRoute(classContentBean); + } + //写domain.gataway.impl + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.GATAWAY_IMPL.getTempFileName())){ + classContentBean.setChildPackageName("domain.gataway.impl"); + writeRoute(classContentBean); + } + //写domain.enum + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ENUM.getTempFileName())){ + classContentBean.setChildPackageName("domain.enums"); + writeRoute(classContentBean); + } + + //写domain.factory + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.FACTORY.getTempFileName())){ + classContentBean.setChildPackageName("domain.factory"); + writeRoute(classContentBean); + } + + //写infrast.acl + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL.getTempFileName())){ + if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ + classContentBean.setChildPackageName("infrast.acl"); + }else { + classContentBean.setChildPackageName("infrast.adapter"); + } + writeRoute(classContentBean); + } + + //写infrast.acl.impl + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_IMPL.getTempFileName())){ + if(writeContentBean.getHumpClassName().toLowerCase().contains(TemplateFileEnum.ACL.getTempFileName())){ + classContentBean.setChildPackageName("infrast.acl.impl"); + }else { + classContentBean.setChildPackageName("infrast.adapter.impl"); + } + writeRoute(classContentBean); + } + + //写acl.param + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.ACL_PARAM.getTempFileName())){ + writeClassFileV2(classContentBean); + } + + //写app.cmd + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.CMD.getTempFileName())){ + classContentBean.setChildPackageName("app.command"); + writeRoute(classContentBean); + } + + //写app.exe + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.EXE.getTempFileName())){ + classContentBean.setChildPackageName("app.executor"); + writeRoute(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ElementHandlerContainer.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ElementHandlerContainer.java new file mode 100644 index 0000000..97f57fc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ElementHandlerContainer.java @@ -0,0 +1,61 @@ +package com.tianhua.codemaker.app.dynamicddd; + +import com.tianhua.codemaker.annotations.ElementTag; +import com.tianhua.codemaker.api.DomainElementHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.aop.support.AopUtils; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description: + * date: 2022/1/17 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +@Slf4j +public class ElementHandlerContainer implements ApplicationContextAware { + + private Map elementHandlerMap = new HashMap<>(); + + + /** + * 根据代码元素 + * @param codeElement + * @return + */ + public DomainElementHandler getElementHandler(String codeElement) { + return elementHandlerMap.get(codeElement); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + Environment environment = applicationContext.getEnvironment(); + Map beansOfMQHandler = applicationContext.getBeansWithAnnotation(ElementTag.class); + for (Map.Entry entry : beansOfMQHandler.entrySet()) { + // 获取Handler中的代码元素标签 + ElementTag identifier = AopUtils.getTargetClass(entry.getValue()).getAnnotation(ElementTag.class); + String elementTag = environment.resolveRequiredPlaceholders(identifier.elementName()).intern(); + if(elementTag.contains(",")){ + String [] elementArr = elementTag.split(","); + //多个element共用一个代码元素处理器 + for (String element : elementArr){ + elementHandlerMap.put(element, (DomainElementHandler) entry.getValue()); + } + }else{ + elementHandlerMap.put(elementTag, (DomainElementHandler) entry.getValue()); + } + + } + log.info(">>>>>代码元素处理标签", elementHandlerMap); + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java new file mode 100644 index 0000000..156954b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperElementHandler.java @@ -0,0 +1,336 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.MapperMethodConstant; +import com.tianhua.codemaker.bean.dddelement.DynamicMapperElementBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import org.assertj.core.util.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dynamicMapperElementHandler") +public class DynamicMapperElementHandler implements DomainElementHandler { + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Autowired + private AppServiceConfig appServiceConfig; + + @Override + public DynamicMapperElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + DynamicMapperElementBean dynamicMapperElementBean = new DynamicMapperElementBean(); + List mapperInterfaceBeanList = new ArrayList<>(); + List classBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k, v) -> { + if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.DYNAMIC_MAPPER.getElement())) { + importPackageService.dealImportClass(v, plantUmlContextBean); + v.getMethodBeanList().forEach(methodBean -> { + methodBean.buildDoc(); + buildParamAnnotation(methodBean); + methodBean.setMethodName(methodBean.refreshMethodName()); + }); + mapperInterfaceBeanList.add(v); + //这里把mapperxml当作class将动态增加的方法当作field,构建xml sql循环渲染 + ClassBean mapperXmlBean = new ClassBean(); + mapperXmlBean.setClassName(v.getClassName()); + mapperXmlBean.setTableBean(v.getTableBean()); + mapperXmlBean.setColumnBeanList(v.getColumnBeanList()); + mapperXmlBean.setPackageName(v.getPackageName()); + mapperXmlBean.setImportClassList(v.getImportClassList()); + if(appServiceConfig.containsMybatisPlus()){ + mapperXmlBean.setFieldBeanList(Lists.newArrayList()); + }else { + mapperXmlBean.setFieldBeanList(convertToFieldBeanList(v.getMethodBeanList(), mapperXmlBean)); + } + + classBeanList.add(mapperXmlBean); + } + }); + dynamicMapperElementBean.setClassBeanList(classBeanList); + dynamicMapperElementBean.setInterfaceBeanList(mapperInterfaceBeanList); + return dynamicMapperElementBean; + } + + /** + * 获取plantuml动态调用时序图中的方法,不是内置的mapper方法 + * + * @param methodBeanList + * @return + */ + private List getInvokeSequenceMethod(List methodBeanList) { + Set defaultMethodSet = MapperMethodConstant.defaultMethodSet(); + return methodBeanList.stream().filter(methodBean -> !defaultMethodSet.contains(methodBean.getSimplMethodName())).collect(Collectors.toList()); + } + + + /** + * 这里将mapper方法映射成class的fieldBean,构建sql xml + * + * @param methodBeanList + * @param mapperXmlBean + * @return + */ + private List convertToFieldBeanList(List methodBeanList, ClassBean mapperXmlBean) { + List newMethodBeanList = getInvokeSequenceMethod(methodBeanList); + List fieldBeanList = new ArrayList<>(); + String tableName = mapperXmlBean.getTableBean().getTableName(); + Optional doTypePackage = mapperXmlBean.getImportClassList().stream().filter(str -> str.endsWith("DO")).findFirst(); + String parameterTypeStr = tableName; + if (doTypePackage.isPresent()) { + parameterTypeStr = doTypePackage.get(); + } + + + + for (MethodBean methodBean : newMethodBeanList) { + //判断method是curd哪种 + FieldBean fieldBean = new FieldBean(); + String rwType = ReadWriteTypeEnum.getCodeByMethod(methodBean.getMethodName().trim()); + //读场景-->查询 + if (ReadWriteTypeEnum.READ.getCode().equals(rwType)) { + fieldBean.setFieldName(buildSelectSqlXml(methodBean.getSimplMethodName(), tableName)); + fieldBeanList.add(fieldBean); + continue; + } + if (ReadWriteTypeEnum.isInsert(methodBean.getMethodName())) { + fieldBean.setFieldName(buildInsertSqlXml(methodBean.getSimplMethodName(), tableName)); + fieldBeanList.add(fieldBean); + continue; + } + if (ReadWriteTypeEnum.isUpdate(methodBean.getMethodName())) { + fieldBean.setFieldName(buildUpdateSqlXml(methodBean.getSimplMethodName(), tableName, parameterTypeStr, mapperXmlBean.getColumnBeanList())); + fieldBeanList.add(fieldBean); + continue; + } + if (ReadWriteTypeEnum.isDelete(methodBean.getMethodName())) { + fieldBean.setFieldName(buildDeleteSqlXml(methodBean.getSimplMethodName(), tableName)); + fieldBeanList.add(fieldBean); + continue; + } + } + List fieldBeanList1 = convertDefaultSqlXmlFieldBeanList(mapperXmlBean); + fieldBeanList.addAll(fieldBeanList1); + return fieldBeanList; + } + + /** + * 构建查询sqlxml + * + * @param methodName + * @return + */ + private String buildSelectSqlXml(String methodName, String tableName) { + String sqlTemplate = " "; + return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); + } + + /** + * 构建更新sqlxml + * + * @param methodName + * @return + */ + private String buildUpdateSqlXml(String methodName, String tableName, String parameterTypeStr, List columnBeanList) { + StringBuilder sqlTemplate = new StringBuilder(); + sqlTemplate.append(" \n" + + " update tableName\n" + + " \n"); + boolean containsDateUpdate = false; + int c = 0; + for (ColumnBean columnBean : columnBeanList){ + c++; + if(columnBean.getColumnName().equals("id")){ + continue; + } + if(columnBean.getColumnName().equals("date_update")){ + containsDateUpdate = true; + continue; + } + + String sqlIf = " columnName = #{columnField},\n"; + if(!containsDateUpdate && c == (columnBeanList.size()-1)){ + sqlIf = sqlIf.replace(",",""); + } + sqlIf = sqlIf.replace("columnField",columnBean.getColumnFieldName()).replace("columnName",columnBean.getColumnName()); + sqlTemplate.append(sqlIf); + } + + if(containsDateUpdate){ + sqlTemplate.append(" date_update = now()\n"); + } + + sqlTemplate.append( " \n"); + sqlTemplate.append(" where id = #{id}\n" + + " "); + + return sqlTemplate.toString().replace("methodName", methodName).replace("tableName", tableName).replace("parameterTypeStr", parameterTypeStr); + } + + /** + * 构建删除sqlxml + * + * @param methodName + * @return + */ + private String buildDeleteSqlXml(String methodName, String tableName) { + String sqlTemplate = " \n" + + " delete from table.tableName where id = <#noparse>#{id<#noparse>}\n" + + " "; + return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); + } + + + /** + * 构建插入sqlxml + * + * @param methodName + * @return + */ + private String buildInsertSqlXml(String methodName, String tableName) { + String sqlTemplate = " \n" + + " insert into tableName(\n" + + " ${table.insertColumnNames}\n" + + " )\n" + + " values(\n" + + " ${table.insertColumnNameList}\n" + + " )\n" + + " "; + return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); + } + + /** + * 动态构建方法参数注解 + * 这里是处理controller的注解 + * + * @param methodBean + */ + private void buildParamAnnotation(MethodBean methodBean) { + if (methodBean.getParamArr() == null || methodBean.getParamArr().length == 0) { + return; + } + + for (int i = 0; i < methodBean.getParamArr().length; i++) { + String value = methodBean.getParamArr()[i]; + if (value.contains(" ")) { + value = value.split(" ")[1]; + } else { + value = value.substring(0, 1).toLowerCase() + value.substring(1); + } + methodBean.addParamAnnotation("@Param(value = \"" + value + "\")",i); + } + return; + } + + + /** + * 构建默认的xml sql + * @param mapperXmlBean + * @return + */ + private List convertDefaultSqlXmlFieldBeanList(ClassBean mapperXmlBean) { + List fieldBeanList = new ArrayList<>(); + String tableName = mapperXmlBean.getTableBean().getTableName(); + FieldBean insertFieldBean = new FieldBean(); + Optional doTypePackage = mapperXmlBean.getImportClassList().stream().filter(str -> str.endsWith("DO")).findFirst(); + String parameterTypeStr = tableName; + if (doTypePackage.isPresent()) { + parameterTypeStr = doTypePackage.get(); + } + mapperXmlBean.getTableBean().getInsertColumnNames(); + insertFieldBean.setFieldName(buildDefaultInsertSqlXml("insert", mapperXmlBean.getTableBean(), parameterTypeStr)); + fieldBeanList.add(insertFieldBean); + + + FieldBean deleteFieldBean = new FieldBean(); + deleteFieldBean.setFieldName(buildDefaultDeleteSqlXml("deleteById",tableName)); + fieldBeanList.add(deleteFieldBean); + + + + FieldBean updateFieldBean = new FieldBean(); + updateFieldBean.setFieldName(buildUpdateSqlXml("update",tableName,parameterTypeStr, mapperXmlBean.getColumnBeanList())); + fieldBeanList.add(updateFieldBean); + + + + FieldBean getByIdFieldBean = new FieldBean(); + getByIdFieldBean.setFieldName(buildDefaultGetByIdSqlXml("getById",tableName)); + fieldBeanList.add(getByIdFieldBean); + + + FieldBean getAllFieldBean = new FieldBean(); + getAllFieldBean.setFieldName(buildSelectSqlXml("getAll",tableName)); + fieldBeanList.add(getAllFieldBean); + + + return fieldBeanList; + } + + + private String buildDefaultInsertSqlXml(String methodName, TableBean tableBean, String parameterTypeStr) { + String sqlTemplate = " \n" + + " insert into tableName(\n" + + " ${table.insertColumnNames}\n" + + " )\n" + + " values(\n" + + " ${table.insertColumnNameList}\n" + + " )\n" + + " "; + return sqlTemplate.replace("methodName", methodName) + .replace("tableName", tableBean.getTableName()) + .replace("${table.insertColumnNames}", tableBean.getInsertColumnNames()) + .replace("${table.insertColumnNameList}", tableBean.getInsertColumnNameList()) + .replace("parameterTypeStr",parameterTypeStr); + + } + + /** + * 构建删除sqlxml + * + * @param methodName + * @return + */ + private String buildDefaultDeleteSqlXml(String methodName, String tableName) { + String sqlTemplate = " \n" + + " delete from table.tableName where id = #{id}\n" + + " "; + return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); + } + + + /** + * 构建查询sqlxml + * + * @param methodName + * @return + */ + private String buildDefaultGetByIdSqlXml(String methodName, String tableName) { + String sqlTemplate = " "; + return sqlTemplate.replace("methodName", methodName).replace("tableName", tableName); + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java new file mode 100644 index 0000000..99507be --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DynamicMapperXmlElementHandler.java @@ -0,0 +1,44 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.DynamicMapperXmlElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "dynamicMapperXmlElementHandler") +public class DynamicMapperXmlElementHandler implements DomainElementHandler { + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public DynamicMapperXmlElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + DynamicMapperXmlElementBean dynamicMapperElementBean = new DynamicMapperXmlElementBean(); + List mapperInterfaceBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.DYNAMIC_MAPPER.getElement())){ + importPackageService.dealImportClass(v,plantUmlContextBean); + mapperInterfaceBeanList.add(v); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + } + }); + dynamicMapperElementBean.setInterfaceBeanList(mapperInterfaceBeanList); + return dynamicMapperElementBean; + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DynamicConvertHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DynamicConvertHandler.java similarity index 86% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DynamicConvertHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DynamicConvertHandler.java index 47e8725..4b5abfd 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DynamicConvertHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DynamicConvertHandler.java @@ -1,16 +1,16 @@ -package com.coderman.codemaker.service.invoker.handler; +package com.tianhua.codemaker.service.invoker.handler; import com.alibaba.fastjson.JSON; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.service.invoker.ConvertInvokeService; -import com.coderman.codemaker.service.invoker.InvokeHandler; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.service.invoker.ConvertInvokeService; +import com.tianhua.codemaker.service.invoker.InvokeHandler; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -28,7 +28,7 @@ import java.util.Map; * * date: 2021/11/5 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/DynamicDDDVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/DynamicDDDVarRegistry.java similarity index 88% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/DynamicDDDVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/DynamicDDDVarRegistry.java index 30eefaf..d1f957e 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/DynamicDDDVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/DynamicDDDVarRegistry.java @@ -1,14 +1,14 @@ -package com.coderman.codemaker.service.registry.element; - -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.app.dynamicddd.derivedhandler.DerivedInfrastAclImplElementHandler; -import com.coderman.codemaker.bean.dddelement.*; -import com.coderman.codemaker.bean.dddelementderive.InfrastAclImplElementBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.config.ProjectTemplateDynamicDDDConfig; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.plantuml.ReadDomainPlantDocService; +package com.tianhua.codemaker.service.registry.element; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.app.dynamicddd.derivedhandler.DerivedInfrastAclImplElementHandler; +import com.tianhua.codemaker.bean.dddelement.*; +import com.tianhua.codemaker.bean.dddelementderive.InfrastAclImplElementBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.ProjectTemplateDynamicDDDConfig; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.plantuml.ReadDomainPlantDocService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -20,7 +20,7 @@ import java.util.Map; * Description: * date: 2021/6/29 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -87,6 +87,8 @@ public class DynamicDDDVarRegistry extends AbstractVarRegistry { @Override public Map getRegistVarMap() { PlantUmlContextBean plantUmlContextBean = readFileService.getPlantUmlContextBean(projectTemplateDynamicDDDConfig.getPlantumlFileName()); + plantUmlContextBean.setDerivedPlantUmlContextBean(new PlantUmlContextBean()); + DomainBoElementBean domainBoElementBean = (DomainBoElementBean)domainElementHandler.getElementBeanList(plantUmlContextBean); ValueObjectElementBean valueObjectElementBean = (ValueObjectElementBean)valueObjectElementHandler.getElementBeanList(plantUmlContextBean); RepositoryElementBean repositoryElementBean = (RepositoryElementBean)repositoryElementHandler.getElementBeanList(plantUmlContextBean); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/factory/ElementFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/factory/ElementFactory.java new file mode 100644 index 0000000..72cbd06 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/factory/ElementFactory.java @@ -0,0 +1,116 @@ +package com.tianhua.codemaker.service.registry.factory; + +import com.alibaba.fastjson.JSON; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.app.dynamicddd.ElementHandlerContainer; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.dddelement.ElementBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description: + * date: 2022/3/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Slf4j +@Service +public class ElementFactory { + @Autowired + private AppServiceConfig appServiceConfig; + @Autowired + protected ElementHandlerContainer elementHandlerContainer; + + + /** + * 构建自定义代码元素集合 + * @param plantUmlContextBean + * @return + */ + public Map getElementMap(PlantUmlContextBean plantUmlContextBean){ + List ftlBeanList = appServiceConfig.getCustomCodeFtlList(); + Map customElementMap = new HashMap<>(); + if(CollectionUtils.isNotEmpty(ftlBeanList)){ + for (FtlBean ftlBean : ftlBeanList){ + DomainElementHandler domainElementHandler = elementHandlerContainer.getElementHandler(ftlBean.getCodeTempFileName()); + if(domainElementHandler == null){ + log.error("找不到对应代码元素处理器,ftlBean = "+ JSON.toJSONString(ftlBean)); + continue; + } + plantUmlContextBean.setFtlBean(ftlBean); + ElementBean elementBean = (ElementBean)domainElementHandler.getElementBeanList(plantUmlContextBean); + customElementMap.put(ftlBean.getFtlStr(),elementBean); + } + } + + return customElementMap; + } + + + /** + * 处理pom依赖 + * @param plantUmlContextBean + */ + public void dealPomDependency(PlantUmlContextBean plantUmlContextBean){ + Map contextBeanMap = plantUmlContextBean.getCompContextBeanMap(); + Map pomBeanMap = plantUmlContextBean.getPomBeanMap(); + for (Map.Entry pomBeanEntry : pomBeanMap.entrySet()){ + PomBean pomBean = pomBeanEntry.getValue(); + if(CollectionUtils.isEmpty(pomBean.getDependencyList())){ + continue; + } + pomBean.getDependencyList().forEach(gavBean -> { + ComponentContextBean componentContextBean = contextBeanMap.get(gavBean.getComponentName()); + if(componentContextBean != null && componentContextBean.getComponentConfigBean() != null){ + gavBean.setArtifactId(componentContextBean.getComponentConfigBean().getArtifactId()); + gavBean.setGroupId(componentContextBean.getComponentConfigBean().getGroupId()); + gavBean.setVersion(componentContextBean.getComponentConfigBean().getVersion()); + gavBean.setScope(componentContextBean.getComponentConfigBean().getScope()); + gavBean.setType(componentContextBean.getComponentConfigBean().getType()); + gavBean.setExclusionGAContent(buildExclusionGAContent(componentContextBean.getComponentConfigBean().getExclusionGAList())); + } + }); + } + } + + + private String buildExclusionGAContent(String exclusionGAList){ + if(StringUtils.isEmpty(exclusionGAList)){ + return null; + } + StringBuilder builder = new StringBuilder(" \n"); + if(exclusionGAList.contains(",")){ + String [] exclusionArr = exclusionGAList.split(","); + for (String exclusionGA : exclusionArr){ + String [] gaArr = exclusionGA.split(":"); + builder.append(" \n"); + builder.append(" " + gaArr[0] + "\n"); + builder.append(" " + gaArr[1] + "\n"); + builder.append(" \n"); + } + }else{ + String [] gaArr = exclusionGAList.split(":"); + builder.append(" \n"); + builder.append(" " + gaArr[0] + "\n"); + builder.append(" " + gaArr[1] + "\n"); + builder.append(" \n"); + } + builder.append(" \n"); + return builder.toString(); + } + +} -- Gitee From 84e41f1d81bd1f007b09d627c55a52b99cf518e1 Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:16:39 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codemaker/component/package-info.java | 1 - .../classloader/CompClassFactory.java | 113 ++- .../classloader/CompClassLoadService.java | 30 +- .../classloader/CompClassLoader.java | 8 +- .../component/CompPropReadService.java | 115 ++- .../decorate/AppCompDecorateServiceImpl.java | 71 +- .../codemaker/component/package-info.java | 1 + .../CompSingleClassRegistServiceImpl.java | 34 +- .../scan/AppCompScanServiceImpl.java | 17 +- .../codemaker/constant/ApiConstant.java | 4 +- .../liteflow/LiteFlowDecorateServiceImpl.java | 47 + .../MapperPlusDecorateHandler.java | 102 ++ .../MybatisPlusDecorateServiceImpl.java | 38 + .../elementhandler/CmpElementHandler.java | 60 ++ .../elementhandler/PomElementHandler.java | 34 + .../ValidatorElementHandler.java | 60 ++ .../codemaker/custom/package-info.java | 1 + .../factory/SpringClassBeanFactory.java | 14 +- .../codemaker/validate/ValidateAopImpl.java | 195 ++++ .../validate/ValidateHibernateJSRImpl.java | 155 +++ .../codemaker/validate/ValidateParamImpl.java | 194 ++++ .../validate/ValidateServiceImpl.java | 143 +++ .../codemaker/validate/ValidateUtilImpl.java | 133 +++ .../com/coderman/codemaker/package-info.java | 1 - .../service/WriteDynamicCodeService.java | 711 -------------- .../service/WriteDynamicDDDService.java | 710 -------------- .../invoker/InvokeElementRegistService.java | 82 -- .../{coderman => tianhua}/codemaker/Main.java | 21 +- .../com/tianhua/codemaker/app/AppService.java | 19 + .../codemaker/app/CommonWriteService.java | 155 +++ .../app/FunctionCodeAppWriteService.java | 82 ++ .../codemaker/app/IWriteFileService.java | 21 + .../codemaker/app/SpringBootAppService.java | 38 + .../codemaker/app/SpringCloudAppService.java | 48 + .../tianhua/codemaker/app/WriteService.java | 161 ++++ .../app/dynamicddd/ClassBeanFactory.java | 68 ++ .../app/dynamicddd/ClassConvertFactory.java | 899 ++++++++++++++++++ .../app/dynamicddd/MethodBeanFactory.java | 78 ++ .../app/dynamicddd/ValidateFactory.java | 46 + .../handler/AppCmdElementHandler.java | 62 ++ .../handler/AppExeElementHandler.java | 151 +++ .../handler/AppListenerElementHandler.java | 47 + .../handler/CacheElementHandler.java | 57 ++ .../handler/DomainBoElementHandler.java | 227 +++++ .../handler/DomainFactoryElementHandler.java | 48 + .../handler/DomainGatawayElementHandler.java | 49 + .../handler/DomainServiceElementHandler.java | 50 + .../handler/EventElementHandler.java | 47 + .../handler/InfrastAclElementHandler.java | 149 +++ .../handler/MqConsumerElementHandler.java | 52 + .../handler/MqHandlerElementHandler.java | 52 + .../handler/MqProducerElementHandler.java | 53 ++ .../handler/MsgBodyElementHandler.java | 47 + .../handler/RepositoryElementHandler.java | 47 + .../handler/ValueObjectElementHandler.java | 137 +++ .../SpringBootApiDocWriteServiceImpl.java | 36 + .../SpringBootWriteServiceImpl.java | 49 + .../SCFeignApiDocWriteServiceImpl.java | 40 + .../SCFeignApiWriteServiceImpl.java | 43 + .../SCFeignProviderWriteServiceImpl.java | 162 ++++ .../codemaker/config/AppServiceConfig.java | 210 +++- .../codemaker/config/ConfigFactory.java | 52 + .../codemaker/config/ConfigParseService.java | 235 +++++ .../config/ProjectTemplateColaConfig.java | 326 +++++-- .../config/ProjectTemplateDubboConfig.java | 165 ++-- .../ProjectTemplateDynamicDDDConfig.java | 4 +- .../ProjectTemplateSpringCloudConfig.java | 151 ++- .../ProjectTemplateSpringbootConfig.java | 154 ++- .../controller/CodeMakerController.java | 37 +- .../controller/GeneratorController.java | 80 +- .../controller/GeneratorFastController.java | 16 +- .../codemaker/dao/SqlMapper.java | 8 +- .../codemaker/exceptions/ConfigException.java | 4 +- .../listener/RefrashConfigListener.java | 26 +- .../service/AbstractEleWriteService.java | 133 +++ .../service/AnnotationParseService.java | 183 ++++ .../codemaker/service/WriteApiDocService.java | 31 +- .../codemaker/service/WriteCodeService.java | 113 ++- .../service/WriteDynamicCodeService.java | 460 +++++++++ .../service/WriteDynamicDDDService.java | 210 ++++ .../service/adapter/IClazzAdapter.java | 4 +- .../adapter/JavsAdapterBeanFactory.java | 26 + .../service/adapter/PackgeConstants.java | 4 +- .../component/ComponentDecorateService.java | 19 +- .../dberpicture/DBErPictureService.java | 2 +- .../dberpicture/DBErPictureServiceImpl.java | 2 +- .../codemaker/service/dsl/DSLService.java | 8 +- .../service/invoker/ConvertInvokeService.java | 20 +- .../invoker/InvokeElementRegistService.java | 56 ++ .../service/invoker/InvokeHandler.java | 6 +- .../invoker/InvokeSequenceService.java | 8 +- .../service/invoker/MethodFactoryService.java | 14 +- .../service/invoker/MethodInvokeService.java | 32 +- .../invoker/ProviderInvokeHandler.java | 4 +- .../invoker/ReturnBodyFactoryService.java | 10 +- .../invoker/handler/AppHttpInvokeHandler.java | 26 +- .../invoker/handler/AppRpcInvokeHandler.java | 18 +- .../invoker/handler/DomainInvokeHandler.java | 24 +- .../invoker/handler/InfrastInvokeHandler.java | 27 +- .../ImportPackageServiceImpl.java} | 28 +- .../packageimport/PackageImportService.java | 12 +- .../plantuml/ReadDomainPlantDocService.java | 55 +- .../ReadInvokeSequencePlantDocService.java | 26 +- .../plantuml/ReadPlantUMLDocService.java | 18 +- .../plantuml/WriteDomainPlantDocService.java | 71 ++ .../service/registry/AbstractVarRegistry.java | 156 ++- .../ApplicationPropertiesVarRegistry.java | 4 +- .../element/BaseControllerVarRegistry.java | 4 +- .../element/ControllerVarRegistry.java | 10 +- .../registry/element/EntityVarRegistry.java | 10 +- .../registry/element/MapperVarRegistry.java | 12 +- .../element/MapperXmlVarRegistry.java | 39 +- .../registry/element/PomVarRegsitry.java | 4 +- .../element/ServiceImplVarRegistry.java | 10 +- .../registry/element/ServiceVarRegistry.java | 10 +- .../SpringApplicationContextVarRegistry.java | 4 +- .../registry/element/TestVarRegistry.java | 10 +- .../registry/element/VoVarRegistry.java | 10 +- .../service/template/FreemarkerService.java | 21 +- .../service/template/TemlateVarService.java | 168 +++- .../service/write/WriteSpringbootService.java | 84 +- .../codemaker/utils/Constant.java | 2 +- .../codemaker/utils/FreeMarkerUtil.java | 2 +- .../codemaker/utils/FreemarkerUtils.java | 2 +- .../codemaker/utils/ResultDto.java | 2 +- .../codemaker/utils/SpringContextHolder.java | 2 +- 126 files changed, 7621 insertions(+), 2378 deletions(-) delete mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/package-info.java rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/classloader/CompClassFactory.java (68%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/classloader/CompClassLoadService.java (89%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/classloader/CompClassLoader.java (95%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/CompPropReadService.java (50%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/decorate/AppCompDecorateServiceImpl.java (44%) create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/package-info.java rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/regist/CompSingleClassRegistServiceImpl.java (84%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/component/scan/AppCompScanServiceImpl.java (76%) rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/constant/ApiConstant.java (83%) create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/LiteFlowDecorateServiceImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MapperPlusDecorateHandler.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MybatisPlusDecorateServiceImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/CmpElementHandler.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/PomElementHandler.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/ValidatorElementHandler.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/package-info.java rename codemaker-parent/codemaker-apiImpl/src/main/java/com/{coderman => tianhua}/codemaker/factory/SpringClassBeanFactory.java (84%) create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateAopImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateHibernateJSRImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateParamImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateServiceImpl.java create mode 100644 codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateUtilImpl.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/package-info.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicCodeService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicDDDService.java delete mode 100644 codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeElementRegistService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/Main.java (48%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/AppService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/CommonWriteService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/FunctionCodeAppWriteService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/IWriteFileService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringBootAppService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringCloudAppService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/WriteService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassBeanFactory.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassConvertFactory.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/MethodBeanFactory.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ValidateFactory.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppExeElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/CacheElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainServiceElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/EventElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/AppServiceConfig.java (74%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigFactory.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigParseService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/ProjectTemplateColaConfig.java (31%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/ProjectTemplateDubboConfig.java (54%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/ProjectTemplateDynamicDDDConfig.java (94%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/ProjectTemplateSpringCloudConfig.java (58%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/config/ProjectTemplateSpringbootConfig.java (58%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/controller/CodeMakerController.java (85%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/controller/GeneratorController.java (85%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/controller/GeneratorFastController.java (96%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/dao/SqlMapper.java (69%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/exceptions/ConfigException.java (82%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/listener/RefrashConfigListener.java (73%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/AbstractEleWriteService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/AnnotationParseService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/WriteApiDocService.java (76%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/WriteCodeService.java (83%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicCodeService.java create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicDDDService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/adapter/IClazzAdapter.java (85%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/JavsAdapterBeanFactory.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/adapter/PackgeConstants.java (92%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/component/ComponentDecorateService.java (79%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/dberpicture/DBErPictureService.java (89%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/dberpicture/DBErPictureServiceImpl.java (93%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/dsl/DSLService.java (76%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/ConvertInvokeService.java (97%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeElementRegistService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/InvokeHandler.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/InvokeSequenceService.java (79%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/MethodFactoryService.java (96%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/MethodInvokeService.java (94%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/ProviderInvokeHandler.java (71%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/ReturnBodyFactoryService.java (90%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/handler/AppHttpInvokeHandler.java (84%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/handler/AppRpcInvokeHandler.java (90%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/handler/DomainInvokeHandler.java (90%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/invoker/handler/InfrastInvokeHandler.java (91%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman/codemaker/service/ImportPackageService.java => tianhua/codemaker/service/packageimport/ImportPackageServiceImpl.java} (96%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/packageimport/PackageImportService.java (81%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/plantuml/ReadDomainPlantDocService.java (89%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java (93%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/plantuml/ReadPlantUMLDocService.java (74%) create mode 100644 codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/WriteDomainPlantDocService.java rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/AbstractVarRegistry.java (69%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java (72%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/BaseControllerVarRegistry.java (72%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/ControllerVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/EntityVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/MapperVarRegistry.java (69%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/MapperXmlVarRegistry.java (66%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/PomVarRegsitry.java (70%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/ServiceImplVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/ServiceVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java (73%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/TestVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/registry/element/VoVarRegistry.java (75%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/template/FreemarkerService.java (81%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/template/TemlateVarService.java (54%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/service/write/WriteSpringbootService.java (74%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/utils/Constant.java (94%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/utils/FreeMarkerUtil.java (98%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/utils/FreemarkerUtils.java (95%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/utils/ResultDto.java (93%) rename codemaker-parent/codemaker-core/src/main/java/com/{coderman => tianhua}/codemaker/utils/SpringContextHolder.java (97%) diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/package-info.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/package-info.java deleted file mode 100644 index f4f1169..0000000 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.coderman.codemaker.component; \ No newline at end of file diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassFactory.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassFactory.java similarity index 68% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassFactory.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassFactory.java index 8368a14..020f372 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassFactory.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassFactory.java @@ -1,6 +1,9 @@ -package com.coderman.codemaker.classloader; +package com.tianhua.codemaker.classloader; -import com.coderman.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.enums.VisibilityEnum; +import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -14,27 +17,26 @@ import java.util.regex.Pattern; * Description: * date: 2021/11/23 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @Service public class CompClassFactory { - /** * 批量转换 * @param classList - * @param compName + * @param componentConfigBean * @return */ - public List convert2ClassBean(List> classList,String compName){ + public List convert2ClassBean(List> classList, ComponentConfigBean componentConfigBean){ if(CollectionUtils.isEmpty(classList)){ return new ArrayList<>(); } List list = new ArrayList<>(); for (Class clazz : classList){ - list.add(buildClassBean(clazz,compName)); + list.add(buildClassBean(clazz, componentConfigBean)); } return list; } @@ -57,17 +59,29 @@ public class CompClassFactory { } /** - * 通过类加载将类的信息转换到代码模型上 + * + * 通过类加载+动态配置将类的信息转换到代码模型上 * @param clazz + * @param componentConfigBean * @return */ - private ClassBean buildClassBean(Class clazz,String compName){ + private ClassBean buildClassBean(Class clazz, ComponentConfigBean componentConfigBean){ ClassBean classBean = new ClassBean(); classBean.setPackageName(clazz.getCanonicalName()); classBean.setClassName(clazz.getSimpleName()); - classBean.setCompName(compName); - classBean.setFieldBeanList(buildFieldBeanList(clazz.getDeclaredFields())); - classBean.setMethodBeanList(buildMethodBeanList(clazz.getDeclaredMethods())); + classBean.setCompName(componentConfigBean.getServiceName()); + + if(componentConfigBean.getFieldMap().isEmpty()){ + classBean.setFieldBeanList(buildFieldBeanList(clazz.getDeclaredFields())); + }else { + classBean.setFieldBeanList(buildFieldBeanList(componentConfigBean.getFieldMap().get(clazz.getSimpleName()))); + } + + if(componentConfigBean.getMethodMap().isEmpty()){ + classBean.setMethodBeanList(buildMethodBeanList(clazz.getDeclaredMethods())); + }else { + classBean.setMethodBeanList(buildMethodBeanList(componentConfigBean.getMethodMap().get(clazz.getSimpleName()))); + } return classBean; } @@ -291,4 +305,79 @@ public class CompClassFactory { return paramList; } + + /** + * 构建方法列表 + * @param methodStrList + * @return + */ + private List buildMethodBeanList(List methodStrList){ + if(CollectionUtils.isEmpty(methodStrList)){ + return Lists.newArrayList(); + } + List methodBeanList = new ArrayList<>(); + for (String method : methodStrList){ + MethodBean methodBean = new MethodBean(); + if(method.contains("void")){ + methodBean.setReturnClass("void"); + + }else { + String returnClass = method.replace("private","") + .replace("public","") + .replace("protected","") + .replace("final","") + .replace("volatile","") + .replace("static","").trim().split(" ")[0]; + methodBean.setReturnClass(returnClass); + } + methodBean.setStatic(method.contains("static")); + String [] methodArr = method.split(" "); + for (String str : methodArr){ + if(str.contains("(")){ + String methodName = str.split("\\(")[0]; + methodBean.setMethodName(methodName+method.substring(method.indexOf("("))); + methodBean.buildParamArr(); + } + } + methodBeanList.add(methodBean); + } + return methodBeanList; + } + + + /** + * 构建属性列表 + * @param fieldStrList + * @return + */ + private List buildFieldBeanList(List fieldStrList){ + if(CollectionUtils.isEmpty(fieldStrList)){ + return Lists.newArrayList(); + } + List fieldBeanList = new ArrayList<>(); + for (String fieldStr : fieldStrList){ + FieldBean fieldBean = new FieldBean(); + if(fieldStr.trim().contains(VisibilityEnum.PRIVATE.getVisibility())){ + fieldBean.setVisibility(VisibilityEnum.PRIVATE.getVisibility()); + } + if(fieldStr.trim().contains(VisibilityEnum.PUBLIC.getVisibility())){ + fieldBean.setVisibility(VisibilityEnum.PUBLIC.getVisibility()); + } + if(fieldStr.trim().contains(VisibilityEnum.PROTECT.getVisibility())){ + fieldBean.setVisibility(VisibilityEnum.PROTECT.getVisibility()); + } + String [] fieldArr = fieldStr.trim().split(" "); + fieldBean.setFieldSimpleName(fieldArr[fieldArr.length - 1]); + + for (int i = fieldArr.length - 2;i > 0;i --){ + if(StringUtils.isEmpty(fieldArr[i].trim())){ + continue; + } + fieldBean.setFieldType(fieldArr[i]); + fieldBean.setFieldName(fieldArr[i] + " " + fieldBean.getFieldSimpleName()); + break; + } + } + return fieldBeanList; + } } diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoadService.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoadService.java similarity index 89% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoadService.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoadService.java index 0bac3fb..d7fd1f7 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoadService.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoadService.java @@ -1,13 +1,10 @@ -package com.coderman.codemaker.classloader; - -import com.coderman.codemaker.bean.component.ComponentConfigBean; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.AnnotationBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.utils.clazz.ClassUtils; -import org.apache.commons.lang3.ClassLoaderUtils; +package com.tianhua.codemaker.classloader; + +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.AnnotationBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -26,7 +23,7 @@ import java.util.jar.JarFile; * Description: * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -55,7 +52,7 @@ public class CompClassLoadService { ComponentContextBean componentContextBean = new ComponentContextBean(); CompClassLoader classLoader = buildClassLoader(componentConfigBean); List> classList = classLoader.loadClassList(componentConfigBean.getClassList()); - List classBeanList = compClassFactory.convert2ClassBean(classList, componentConfigBean.getServiceName()); + List classBeanList = compClassFactory.convert2ClassBean(classList, componentConfigBean); componentContextBean.setClassBeanList(classBeanList); @@ -71,11 +68,10 @@ public class CompClassLoadService { try { return loadComp(componentConfigBean); } catch (IOException e) { - e.printStackTrace(); + return componentContextBean; } catch (ClassNotFoundException e) { - e.printStackTrace(); + return componentContextBean; } - } return componentContextBean; } @@ -163,7 +159,7 @@ public class CompClassLoadService { } else if(clazz.isInterface()){ interfaceClassList.add(clazz); - }else if(clazz.isArray() || clazz.isMemberClass()){ + }else if(clazz.isArray()){ classList.add(clazz); }else if(clazz.isEnum()){ enumClassList.add(clazz); @@ -174,7 +170,7 @@ public class CompClassLoadService { } } } - List classBeanList = compClassFactory.convert2ClassBean(classList,componentConfigBean.getServiceName()); + List classBeanList = compClassFactory.convert2ClassBean(classList,componentConfigBean); List interfaceBeanList = compClassFactory.convert2InterfaceBean(interfaceClassList,componentConfigBean.getServiceName()); List annotationBeanList = compClassFactory.convert2AnnotationBeanClass(annotationClassList); //todo 枚举 diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoader.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoader.java similarity index 95% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoader.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoader.java index 674a39a..86b8013 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/classloader/CompClassLoader.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/classloader/CompClassLoader.java @@ -1,7 +1,6 @@ -package com.coderman.codemaker.classloader; +package com.tianhua.codemaker.classloader; import com.alibaba.fastjson.JSON; -import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import java.io.IOException; @@ -17,7 +16,7 @@ import java.util.List; * Description: * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -71,6 +70,9 @@ public class CompClassLoader extends URLClassLoader { List> list = new ArrayList<>(); for (String classNamePath : classList){ Class clazz = loadTargetClass(classNamePath); + if(clazz == null){ + continue; + } list.add(clazz); } return list; diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/CompPropReadService.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/CompPropReadService.java similarity index 50% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/CompPropReadService.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/CompPropReadService.java index 11a9fba..f62c7ca 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/CompPropReadService.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/CompPropReadService.java @@ -1,8 +1,12 @@ -package com.coderman.codemaker.component; +package com.tianhua.codemaker.component; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.component.ComponentConfigBean; -import lombok.extern.slf4j.Slf4j; +import com.google.common.collect.Lists; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.enums.ConfigFileEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -15,13 +19,13 @@ import java.util.*; * Description: * date: 2021/11/23 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @Service -//@Slf4j public class CompPropReadService { + /** * 从配置文件中构建组件bean * @return @@ -30,12 +34,12 @@ public class CompPropReadService { try { Properties properties = readPropertiesFile(componentPath); if(properties == null){ + //System.out.println("加载组件配置失败,componentPath = "+componentPath); System.out.println("加载组件配置失败,componentPath = "+componentPath); return null; } ComponentConfigBean componentBean = new ComponentConfigBean(); - Object packageValue = properties.getProperty(GlobalConstant.COMP_PACKAGE); if(packageValue == null){ componentBean.setPackageName(""); @@ -59,6 +63,12 @@ public class CompPropReadService { if(entry.getKey().toString().equals(GlobalConstant.COMP_TYPE)){ componentBean.setCompType(entry.getValue().toString()); } + if(entry.getKey().toString().equals(GlobalConstant.COMP_GAV_TYPE)){ + componentBean.setType(entry.getValue().toString()); + } + if(entry.getKey().toString().equals(GlobalConstant.COMP_GAV_SCOPE)){ + componentBean.setScope(entry.getValue().toString()); + } if(entry.getKey().toString().equals(GlobalConstant.COMP_SITE)){ componentBean.setCompSite(entry.getValue().toString()); } @@ -68,7 +78,9 @@ public class CompPropReadService { if(entry.getKey().toString().equals(GlobalConstant.COMP_SINGLE_CLASS_TYPE)){ componentBean.setClassType(entry.getValue().toString()); } - + if(entry.getKey().toString().equals(GlobalConstant.COMP_SINGLE_CLASS_TYPE)){ + componentBean.setClassType(entry.getValue().toString()); + } if(entry.getKey().toString().startsWith(GlobalConstant.COMP_CLASS_PRE)){ componentBean.addClass(entry.getValue().toString()); } @@ -82,8 +94,37 @@ public class CompPropReadService { componentBean.addEnum(entry.getValue().toString()); } - if(entry.getKey().toString().startsWith(GlobalConstant.COMP_CLASS_METHOD_PRE)){ - componentBean.addMethod(entry.getValue().toString()); + if(entry.getKey().toString().startsWith(GlobalConstant.COMP_CONFIG_NAME)){ + componentBean.setConfigName(entry.getValue().toString()); + } + + if(entry.getKey().toString().startsWith(GlobalConstant.COMP_EXCLUSION_GA_LIST)){ + componentBean.setExclusionGAList(entry.getValue().toString()); + } + + if(entry.getKey().toString().contains(".")){ + String [] classKeyArr = entry.getKey().toString().split("\\."); + if(classKeyArr[1].startsWith(GlobalConstant.COMP_CLASS_METHOD_PRE)){ + componentBean.addMethod(classKeyArr[0], entry.getValue().toString()); + } + if(classKeyArr[1].startsWith(GlobalConstant.COMP_FIELD_PRE)){ + componentBean.addField(classKeyArr[0], entry.getValue().toString()); + } + } + } + + //如果组件需要有配置内容配置到目标工程的配置文件中 + if(StringUtils.isNotEmpty(componentBean.getConfigName())){ + int index = componentPath.lastIndexOf("/")+1; + String configPath = componentPath.substring(0,index)+"config.properties"; + List configList = getConfigList(configPath); + if(CollectionUtils.isEmpty(configList)){ + //todo yml配置支持 + configPath = componentPath.substring(0,index)+"config.yml"; + configList = getConfigList(configPath); + componentBean.setConfigList(configList); + }else { + componentBean.setConfigList(configList); } } return componentBean; @@ -93,6 +134,36 @@ public class CompPropReadService { return null; } + /** + * 读取组件的自身配置 + * @param filePath + * @return + */ + private List getConfigList(String filePath){ + List list = new ArrayList<>(); + try { + + if(filePath.endsWith(ConfigFileEnum.PROPERTIES.getFileExtName())){ + Properties configProperties = readPropertiesFile(filePath); + if(configProperties == null){ + System.out.println("not find component filePath = "+filePath); + return list; + } + for (Map.Entry entry : configProperties.entrySet()){ + list.add(entry.getKey().toString()+"="+entry.getValue().toString()); + } + }else { + return readCommonConfigFile(filePath); + } + + } catch (IOException e) { + return list; + } + return list; + + } + + /** * 读取组件配置文件 * @param filePath @@ -103,6 +174,7 @@ public class CompPropReadService { InputStream inputStream = null; try { ClassPathResource classPathResource = new ClassPathResource(filePath); + inputStream = classPathResource.getInputStream(); Properties props = new Properties(); props.load(new InputStreamReader(inputStream, "UTF-8")); @@ -116,4 +188,27 @@ public class CompPropReadService { } } } + + + + /** + * 读取组件配置文件 + * @param filePath + * @return + * @throws IOException + */ + public List readCommonConfigFile(String filePath) throws IOException { + InputStream inputStream = null; + try { + ClassPathResource classPathResource = new ClassPathResource(filePath); + return FileUtils.readLines(classPathResource.getFile(),"UTF-8"); + } catch (Exception e) { + //log("读取组件配置失败,filePath={}",filePath); + return Lists.newArrayList(); + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + } } diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/AppCompDecorateServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/AppCompDecorateServiceImpl.java similarity index 44% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/AppCompDecorateServiceImpl.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/AppCompDecorateServiceImpl.java index 4f1997d..83e04ab 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/decorate/AppCompDecorateServiceImpl.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/decorate/AppCompDecorateServiceImpl.java @@ -1,17 +1,16 @@ -package com.coderman.codemaker.component.decorate; - -import com.coderman.codemaker.api.ICompDecorateService; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.constant.ApiConstant; -import com.coderman.codemaker.element.ElementDecorateHandler; -import com.coderman.codemaker.enums.TemplateFileEnum; +package com.tianhua.codemaker.component.decorate; + +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.constant.ApiConstant; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.TemplateFileEnum; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; -import java.util.Optional; /** * 装饰可以按一个组件一个组件的装饰实现也可以按应用维度一次性装饰多个组件到代码上下文模型中 @@ -19,7 +18,7 @@ import java.util.Optional; * 这里对controller和facade接口方法返回值和方法page参数用apiresult组件进行包装 * date: 2021/11/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -50,58 +49,6 @@ public class AppCompDecorateServiceImpl implements ICompDecorateService { apiClassBeanMap.put(ApiConstant.CLASS_API_RESULT_DATA_DTO, resultDataDtoClassBean); apiClassBeanMap.put(ApiConstant.CLASS_API_PAGE_DTO, pageDTOClassBean); eleFacadeDecorateHandler.decorateElement(apiClassBeanMap, plantUmlContextBean); - - eleFeignDecorateHandler.decorateElement(apiClassBeanMap, plantUmlContextBean); - } - - /** - * 包装controller - * @param abstractClassBean - * @param plantUmlContextBean - *//* - private void decorateControllerApiResult(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean) { - if (abstractClassBean == null) { - return; - } - plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k, v) -> { - if (k.toLowerCase().endsWith(TemplateFileEnum.CONTROLLER.getTempFileName())) { - v.getImportClassList().add(abstractClassBean.getPackageName()); - //导入分页对象 - Optional methodBeanOptional = v.getMethodBeanList().stream().filter(methodBean -> methodBean.getReturnClass().contains(ApiConstant.CLASS_API_PAGE_VO)).findFirst(); - if(methodBeanOptional.isPresent()){ - - } - v.getMethodBeanList().forEach(methodBean -> methodBean.setReturnClass(ApiConstant.CLASS_API_RESULT_DATA_DTO+"<"+methodBean.getReturnClass()+">")); - } - }); - } - - *//** - * 包装facadeimpl - * @param abstractClassBean - * @param plantUmlContextBean - *//* - private void decorateFacadeImpl(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean) { - if (abstractClassBean == null) { - return; - } - plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k, v) -> { - //装饰dubbo注解 - if (k.toLowerCase().endsWith(TemplateFileEnum.FACADE_IMPL.getTempFileName().toLowerCase()) && abstractClassBean.getPackageName().contains("dubbo")) { - v.setAnnotation("@" + abstractClassBean.getClassName()); - v.getImportClassList().add(abstractClassBean.getPackageName()); - - } - }); - - plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k, v) -> { - if (k.toLowerCase().endsWith(TemplateFileEnum.FACADE.getTempFileName().toLowerCase())) { - v.getImportClassList().add(abstractClassBean.getPackageName()); - v.getMethodBeanList().forEach(methodBean -> methodBean.setReturnClass(ApiConstant.CLASS_API_RESULT_DATA_DTO+"<"+methodBean.getReturnClass()+">")); - } - }); - - }*/ } diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/package-info.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/package-info.java new file mode 100644 index 0000000..1c22f58 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/package-info.java @@ -0,0 +1 @@ +package com.tianhua.codemaker.component; \ No newline at end of file diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/regist/CompSingleClassRegistServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/regist/CompSingleClassRegistServiceImpl.java similarity index 84% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/regist/CompSingleClassRegistServiceImpl.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/regist/CompSingleClassRegistServiceImpl.java index f86d0c9..294a514 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/regist/CompSingleClassRegistServiceImpl.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/regist/CompSingleClassRegistServiceImpl.java @@ -1,15 +1,14 @@ -package com.coderman.codemaker.component.regist; - -import com.alibaba.fastjson.JSON; -import com.coderman.codemaker.api.ICompRegistService; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.component.ComponentConfigBean; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.component.CompPropReadService; -import com.coderman.codemaker.enums.ClassEnum; +package com.tianhua.codemaker.component.regist; + +import com.tianhua.codemaker.api.ICompRegistService; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.component.CompPropReadService; +import com.tianhua.codemaker.enums.ClassEnum; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -19,7 +18,6 @@ import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; @@ -27,7 +25,7 @@ import java.util.List; * Description: * date: 2021/12/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -54,7 +52,9 @@ public class CompSingleClassRegistServiceImpl implements ICompRegistService { for (File file : singleClassCompFile.listFiles()){ ComponentConfigBean componentConfigBean = compPropReadService.buildFromProp(path+"/"+file.getName()); - + if(componentConfigBean == null){ + continue; + } if(ClassEnum.CLASS.getClassType().equals(componentConfigBean.getClassType())){ classBeanList.add(buildClassBean(componentConfigBean, file.getName().split("\\.")[0])); } @@ -77,7 +77,7 @@ public class CompSingleClassRegistServiceImpl implements ICompRegistService { classBean.setPackageName(componentConfigBean.getPackageName()); classBean.setClassName(className); classBean.setCompName(GlobalConstant.SINGLE_CLASS_COMMON); - classBean.setMethodBeanList(buildMethodBeanList(componentConfigBean.getMethodList())); + classBean.setMethodBeanList(buildMethodBeanList(componentConfigBean.getMethodMap().get(className))); return classBean; } @@ -89,7 +89,7 @@ public class CompSingleClassRegistServiceImpl implements ICompRegistService { interfaceBean.setClassName(className); interfaceBean.setCompName(GlobalConstant.SINGLE_CLASS_COMMON); - interfaceBean.setMethodBeanList(buildMethodBeanList(componentConfigBean.getMethodList())); + interfaceBean.setMethodBeanList(buildMethodBeanList(componentConfigBean.getMethodMap().get(className))); return interfaceBean; } diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/AppCompScanServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/AppCompScanServiceImpl.java similarity index 76% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/AppCompScanServiceImpl.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/AppCompScanServiceImpl.java index b721eb2..e80cf74 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/component/scan/AppCompScanServiceImpl.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/component/scan/AppCompScanServiceImpl.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.component.scan; +package com.tianhua.codemaker.component.scan; -import com.coderman.codemaker.api.ICompScanService; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.component.ComponentConfigBean; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.classloader.CompClassLoadService; -import com.coderman.codemaker.component.CompPropReadService; +import com.tianhua.codemaker.api.ICompScanService; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.classloader.CompClassLoadService; +import com.tianhua.codemaker.component.CompPropReadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -21,7 +21,7 @@ import java.util.Map; * 这里扫描apiresult组件进行接口方法返回值和方法page参数的包装 * date: 2021/11/25 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -45,6 +45,7 @@ public class AppCompScanServiceImpl implements ICompScanService { ComponentContextBean componentContextBean = compClassLoadService.loadComponent(componentConfigBean); componentContextBean.setComponentName(compName); componentContextBean.setCompType(componentConfigBean.getCompType()); + componentContextBean.setComponentConfigBean(componentConfigBean); componentContextBeanMap.put(compName,componentContextBean); } return componentContextBeanMap; diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ApiConstant.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ApiConstant.java similarity index 83% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ApiConstant.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ApiConstant.java index 4a6b387..51ca20e 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/constant/ApiConstant.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/constant/ApiConstant.java @@ -1,10 +1,10 @@ -package com.coderman.codemaker.constant; +package com.tianhua.codemaker.constant; /** * Description: api 相关包装类 * date: 2021/11/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/LiteFlowDecorateServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/LiteFlowDecorateServiceImpl.java new file mode 100644 index 0000000..baa7cad --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/liteflow/LiteFlowDecorateServiceImpl.java @@ -0,0 +1,47 @@ +package com.tianhua.codemaker.custom.decorate.liteflow; + +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * Description:将代码模型中的SlotBO和Cmp元素通过liteflow组件装饰 + * date: 2022/3/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "liteFlowDecorateService") +public class LiteFlowDecorateServiceImpl implements ICompDecorateService { + private static final String NODE_COMPONENT = "NodeComponent"; + private static final String ABS_SLOT = "AbsSlot"; + + @Resource(name = "eleSlotBODecorateHandler") + private ElementDecorateHandler eleSlotBODecorateHandler; + + @Resource(name = "eleNodeCmpDecorateHandler") + private ElementDecorateHandler eleNodeCmpDecorateHandler; + + @Override + public void decorateComp(ComponentContextBean componentContextBean, PlantUmlContextBean plantUmlContextBean) { + ClassBean compClassBean = componentContextBean.getTargetClass(NODE_COMPONENT); + Map compBeanMap = new HashMap<>(); + compBeanMap.put(NODE_COMPONENT, compClassBean); + + ClassBean absSlotClassBean = componentContextBean.getTargetClass(ABS_SLOT); + Map slotBeanMap = new HashMap<>(); + slotBeanMap.put(ABS_SLOT, absSlotClassBean); + + eleNodeCmpDecorateHandler.decorateElement(compBeanMap, plantUmlContextBean); + eleSlotBODecorateHandler.decorateElement(slotBeanMap, plantUmlContextBean); + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MapperPlusDecorateHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MapperPlusDecorateHandler.java new file mode 100644 index 0000000..481d172 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MapperPlusDecorateHandler.java @@ -0,0 +1,102 @@ +package com.tianhua.codemaker.custom.decorate.mybatisplus; + +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Component; + +import java.sql.Array; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Description:适配mybatis-plus + * 将mapper接口增加父类BaseMapper + * date: 2022/3/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "mapperplusDecorateHandler") +public class MapperPlusDecorateHandler implements ElementDecorateHandler { + private static final String BASE_MAPPER = "BaseMapper"; + + @Override + public void decorateElement(Map classCompMap, PlantUmlContextBean plantUmlContextBean) { + AbstractClassBean baseMapperBean = classCompMap.get(BASE_MAPPER); + if (baseMapperBean != null) { + decorateMapper(baseMapperBean, plantUmlContextBean); + } + } + + /** + * 装饰mapper + * @param abstractClassBean + * @param plantUmlContextBean + */ + private void decorateMapper(AbstractClassBean abstractClassBean, PlantUmlContextBean plantUmlContextBean) { + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if (k.toLowerCase().endsWith(TemplateFileEnum.MAPPER.getTempFileName())) { + ClassBean doClass = plantUmlContextBean.getClassBeanMap().get(k.replace("Mapper","") + "DO"); + if(doClass != null){ + v.setRelationClassStr(" extends BaseMapper<" + doClass.getClassName() + ">"); + v.addImportClass(abstractClassBean.getPackageName()+".BaseMapper"); + //清空mapper方法 + v.setMethodBeanList(Lists.newArrayList()); + + + List superMethodList = new ArrayList<>(); + superMethodList.add(getInsertMethod()); + superMethodList.add(getSelectByIdMethod()); + superMethodList.add(getUpdateByIdMethod()); + v.setSuperMethodBeanList(superMethodList); + } + } + }); + } + + + private MethodBean getInsertMethod(){ + MethodBean methodBean = new MethodBean(); + methodBean.setMethodName("insert(T entity)"); + methodBean.setReturnClass("Integer"); + methodBean.setDesc("插入一条记录"); + methodBean.setVisibility("public"); + methodBean.buildParamArr(); + List paramBeanList = new ArrayList<>(); + paramBeanList.add(ParamBean.getInstance("T","entity",true)); + methodBean.setParamBeanList(paramBeanList); + return methodBean; + } + + private MethodBean getUpdateByIdMethod(){ + MethodBean methodBean = new MethodBean(); + methodBean.setMethodName("updateById(T entity)"); + methodBean.setReturnClass("Integer"); + methodBean.setDesc("修改一条记录"); + methodBean.setVisibility("public"); + methodBean.buildParamArr(); + List paramBeanList = new ArrayList<>(); + paramBeanList.add(ParamBean.getInstance("T","entity",true)); + methodBean.setParamBeanList(paramBeanList); + return methodBean; + } + private MethodBean getSelectByIdMethod(){ + MethodBean methodBean = new MethodBean(); + methodBean.setMethodName("T selectById(Serializable id)"); + methodBean.setReturnClass("T"); + methodBean.setGenericReturnType("T"); + methodBean.setDesc("查询一条记录"); + methodBean.setVisibility("public"); + methodBean.buildParamArr(); + List paramBeanList = new ArrayList<>(); + paramBeanList.add(ParamBean.getInstance("Serializable","id",true)); + methodBean.setParamBeanList(paramBeanList); + return methodBean; + } + + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MybatisPlusDecorateServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MybatisPlusDecorateServiceImpl.java new file mode 100644 index 0000000..01a0f68 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/decorate/mybatisplus/MybatisPlusDecorateServiceImpl.java @@ -0,0 +1,38 @@ +package com.tianhua.codemaker.custom.decorate.mybatisplus; + +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.element.ElementDecorateHandler; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +/** + * Description:将代码模型中的mapper元素通过mybatis-plus组件装饰 + * date: 2022/3/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "mybatisPlusDecorateService") +public class MybatisPlusDecorateServiceImpl implements ICompDecorateService { + private static final String BASE_MAPPER = "BaseMapper"; + + @Resource(name = "mapperplusDecorateHandler") + private ElementDecorateHandler mapperDecorateHandler; + + @Override + public void decorateComp(ComponentContextBean componentContextBean, PlantUmlContextBean plantUmlContextBean) { + InterfaceBean baseMapper = componentContextBean.getTargetInterface(BASE_MAPPER); + Map interfaceBeanMap = new HashMap<>(); + interfaceBeanMap.put(BASE_MAPPER, baseMapper); + + mapperDecorateHandler.decorateElement(interfaceBeanMap, plantUmlContextBean); + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/CmpElementHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/CmpElementHandler.java new file mode 100644 index 0000000..0dca6ca --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/CmpElementHandler.java @@ -0,0 +1,60 @@ +package com.tianhua.codemaker.custom.elementhandler; + +import com.tianhua.codemaker.annotations.ElementTag; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.custom.bean.CustomElementBean; +import com.tianhua.codemaker.service.ImportPackageService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description:自定义代码元素cmp元素处理器 + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + */ +@Component(value = "cmpElementHandler") +@ElementTag(elementName = "cmp") +public class CmpElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageService importPackageService; + + @Override + public CustomElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + FtlBean ftlBean = plantUmlContextBean.getFtlBean(); + List classBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(ftlBean.getCodeTempFileName())) { + String moduleTag = ftlBean.getModuleName(); + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".cmp"; + }else if(v.getPlantUMLPackage().contains(moduleTag)){ + moduleTag = ""; + } + + importPackageService.setPackageNameWithModule(v,moduleTag); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + + classBeanList.add(v); + } + }); + CustomElementBean validatorElementBean = new CustomElementBean(); + validatorElementBean.setClassBeanList(classBeanList); + return validatorElementBean; + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/PomElementHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/PomElementHandler.java new file mode 100644 index 0000000..01d5761 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/PomElementHandler.java @@ -0,0 +1,34 @@ +package com.tianhua.codemaker.custom.elementhandler; + +import com.tianhua.codemaker.annotations.ElementTag; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.custom.bean.PomElementBean; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + */ +@Component(value = "pomElementHandler") +@ElementTag(elementName = "clientpom,infrastpom,feignapipom," + + "domainpom,apppom,adapterpom,startpom,parentpom,apipom,corepom,commonpom,providerpom") +public class PomElementHandler implements DomainElementHandler { + + @Override + public PomElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + FtlBean ftlBean = plantUmlContextBean.getFtlBean(); + PomElementBean clientPomElementBean = new PomElementBean(); + PomBean pomBean = plantUmlContextBean.getPomBeanMap().get(ftlBean.getModuleName()); + clientPomElementBean.setPomBeanList(Lists.newArrayList(pomBean)); + return clientPomElementBean; + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/ValidatorElementHandler.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/ValidatorElementHandler.java new file mode 100644 index 0000000..28d4089 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/elementhandler/ValidatorElementHandler.java @@ -0,0 +1,60 @@ +package com.tianhua.codemaker.custom.elementhandler; + +import com.tianhua.codemaker.annotations.ElementTag; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.custom.bean.CustomElementBean; +import com.tianhua.codemaker.service.ImportPackageService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description:校验层走自定义代码元素处理器 + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + */ +@Component(value = "validatorElementHandler") +@ElementTag(elementName = "validator") +public class ValidatorElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageService importPackageService; + + @Override + public CustomElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + FtlBean ftlBean = plantUmlContextBean.getFtlBean(); + List classBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(ftlBean.getCodeTempFileName())) { + String moduleTag = ftlBean.getModuleName(); + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".validator"; + }else if(v.getPlantUMLPackage().contains(moduleTag)){ + moduleTag = ""; + } + + importPackageService.setPackageNameWithModule(v,moduleTag); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + + classBeanList.add(v); + } + }); + CustomElementBean validatorElementBean = new CustomElementBean(); + validatorElementBean.setClassBeanList(classBeanList); + return validatorElementBean; + } +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/package-info.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/package-info.java new file mode 100644 index 0000000..9ac5422 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/custom/package-info.java @@ -0,0 +1 @@ +package com.tianhua.codemaker.custom; \ No newline at end of file diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/factory/SpringClassBeanFactory.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/factory/SpringClassBeanFactory.java similarity index 84% rename from codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/factory/SpringClassBeanFactory.java rename to codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/factory/SpringClassBeanFactory.java index 87019c7..fd48291 100644 --- a/codemaker-parent/codemaker-apiImpl/src/main/java/com/coderman/codemaker/factory/SpringClassBeanFactory.java +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/factory/SpringClassBeanFactory.java @@ -1,13 +1,11 @@ -package com.coderman.codemaker.factory; +package com.tianhua.codemaker.factory; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.AnnotationBean; -import com.coderman.codemaker.constant.ArchConstant; -import com.coderman.codemaker.constant.ArchSpringConstant; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.AnnotationBean; +import com.tianhua.codemaker.constant.ArchSpringConstant; import org.springframework.stereotype.Service; -import javax.swing.*; import java.util.HashMap; import java.util.Map; @@ -15,7 +13,7 @@ import java.util.Map; * Description: * date: 2021/12/13 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateAopImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateAopImpl.java new file mode 100644 index 0000000..86dab16 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateAopImpl.java @@ -0,0 +1,195 @@ +package com.tianhua.codemaker.validate; + +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.bean.segment.SegmentBean; +import com.tianhua.codemaker.enums.CodeSegmentEnum; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Description:通过aop+自定义注解实现 + * + * 参考:https://www.cnblogs.com/zhangruifeng/p/13460060.html + * + * https://www.jianshu.com/p/816c90b6ddc5 + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +@Component(value = "validateAopService") +public class ValidateAopImpl implements IValidateService { + @Override + public void dealValidate(PlantUmlContextBean plantUmlContextBean) { + Map validateSegmentMap = new HashMap<>(); + plantUmlContextBean.getClassBeanMap().forEach((s, classBean) -> { + if (classBean.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !classBean.getClassName().equals("PageBO")) { + ExtendFieldBean extendFieldBean = classBean.getExtendFieldBean(); + Map dtoValidateSegmentMap = getSegmentMap(extendFieldBean.getDtoKeyList(),extendFieldBean.getValidateKeyList()); + Map voValidateSegmentMap = getSegmentMap(extendFieldBean.getVoKeyList(), extendFieldBean.getValidateKeyList()); + validateSegmentMap.putAll(dtoValidateSegmentMap); + validateSegmentMap.putAll(voValidateSegmentMap); + } + }); + + + if(validateSegmentMap.isEmpty()){ + return; + } + relateValidateSegment(plantUmlContextBean, validateSegmentMap); + } + + + /** + * 将构建出来的segment关联到对应的类上 + * 基于工具类校验的话统一放到class vo/dto上 + * @param plantUmlContextBean + * @param validateSegmentMap + */ + private void relateValidateSegment(PlantUmlContextBean plantUmlContextBean, Map validateSegmentMap){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,classBean)->{ + //对controller的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + }else { + paramType = param; + } + String [] validateKeyArr = validateSegmentMap.get(paramType); + if(validateKeyArr != null){ + List valdateKeyList = Lists.newArrayList(validateKeyArr); + ClassBean voBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + voBean.addImportClass("com.coderman.param.valid.ParamAnnotation"); + if(CollectionUtils.isNotEmpty(voBean.getFieldBeanList())){ + voBean.getFieldBeanList().forEach(fieldBean -> { + if(valdateKeyList.contains(fieldBean.getSimpleName())){ + fieldBean.addAnnotationTag("@ParamAnnotation(required = true)"); + } + }); + } + } + } + } + }); + } + }); + + + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,classBean)->{ + //对facade的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + }else { + paramType = param; + } + String [] validateKeyArr = validateSegmentMap.get(paramType); + if(validateKeyArr != null){ + List valdateKeyList = Lists.newArrayList(validateKeyArr); + + ClassBean voBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + voBean.addImportClass("com.coderman.param.valid.ParamAnnotation"); + if(CollectionUtils.isNotEmpty(voBean.getFieldBeanList())){ + voBean.getFieldBeanList().forEach(fieldBean -> { + if(valdateKeyList.contains(fieldBean.getSimpleName())){ + fieldBean.addAnnotationTag("@ParamAnnotation(required = true)"); + } + }); + } + } + } + } + }); + } + }); + } + + private String buildMethodContent(String paramVar){ + StringBuilder builder = new StringBuilder("ResultDataDto resultDataDto = "+paramVar+".checkParam()\n"); + builder.append("\t\tif(!resultDataDto.isSuccess()){return resultDataDto;}"); + return builder.toString(); + } + + + private MethodBean buildCheckParamMethodBean(String methodContent){ + MethodBean methodBean = new MethodBean(); + methodBean.setMethodName("checkParam()"); + methodBean.setReturnClass("ResultDataDto"); + methodBean.setDesc("参数校验"); + methodBean.setVisibility("public "); + methodBean.setMethodContent(methodContent); + methodBean.setReturnBody(methodContent); + return methodBean; + } + + + private Map getSegmentMap(String [] modelKeyList, String [] validateKeyList){ + Map validateMap = new HashMap<>(); + if(modelKeyList != null && validateKeyList != null){ + for (String modelKey : modelKeyList){ + validateMap.put(modelKey, validateKeyList); + } + } + return validateMap; + } + + /** + * 构建验证的代码段内容 + * @param validateKeyList + * @return + */ + private SegmentBean getValidateSegment(String [] validateKeyList, ClassBean boClassBean){ + StringBuilder builder = new StringBuilder(); + Map fieldBeanMap = boClassBean.getFieldBeanList().stream().collect(Collectors.toMap(FieldBean::getSimpleName, o->o)); + + int i = 0; + for (String varName : validateKeyList){ + FieldBean fieldBean = fieldBeanMap.get(varName); + if(fieldBean == null){ + builder.append("\t\t//if(this."+varName+" == null ){ return ResultDataDto.fail(null);}\n"); + continue; + }else { + if(StringHandleUtils.isStrictBasicType(fieldBean.getFieldType())){ + builder.append("\t\t//if(this."+varName+" == 0 ){ return ResultDataDto.fail(null);}\n"); + continue; + } + if(fieldBean.getFieldType().toLowerCase().equals("string")){ + builder.append("\t\tif(this."+varName+" == null || this."+varName+" == \"\"" +"){ return ResultDataDto.fail(null);}\n"); + }else { + builder.append("\t\tif(this."+varName+" == null){ return ResultDataDto.fail(null);}\n"); + } + } + } + + builder.append("\t\treturn ResultDataDto.success();"); + + SegmentBean segmentBean = SegmentBean.getInstance(CodeSegmentEnum.VALIDATE.getTag(),builder.toString()); + segmentBean.importPackageName("com.coderman.utils.response.ResultDataDto"); + + return segmentBean; + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateHibernateJSRImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateHibernateJSRImpl.java new file mode 100644 index 0000000..efec073 --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateHibernateJSRImpl.java @@ -0,0 +1,155 @@ +package com.tianhua.codemaker.validate; + +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.enums.CodeSegmentEnum; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description:通过aop+自定义注解实现 + * + * 参考:https://blog.csdn.net/kermit_liu/article/details/90043295 + * + * https://www.jianshu.com/p/816c90b6ddc5 + * + * + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +@Component(value = "validateJSRHibernateService") +public class ValidateHibernateJSRImpl implements IValidateService { + @Override + public void dealValidate(PlantUmlContextBean plantUmlContextBean) { + Map validateSegmentMap = new HashMap<>(); + plantUmlContextBean.getClassBeanMap().forEach((s, classBean) -> { + if (classBean.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !classBean.getClassName().equals("PageBO")) { + ExtendFieldBean extendFieldBean = classBean.getExtendFieldBean(); + Map dtoValidateSegmentMap = getSegmentMap(extendFieldBean.getDtoKeyList(),extendFieldBean.getValidateKeyList()); + Map voValidateSegmentMap = getSegmentMap(extendFieldBean.getVoKeyList(), extendFieldBean.getValidateKeyList()); + validateSegmentMap.putAll(dtoValidateSegmentMap); + validateSegmentMap.putAll(voValidateSegmentMap); + } + }); + + + if(validateSegmentMap.isEmpty()){ + return; + } + relateValidateSegment(plantUmlContextBean, validateSegmentMap); + } + + + /** + * 将构建出来的segment关联到对应的类上 + * 基于工具类校验的话统一放到class vo/dto上 + * @param plantUmlContextBean + * @param validateSegmentMap + */ + private void relateValidateSegment(PlantUmlContextBean plantUmlContextBean, Map validateSegmentMap){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,classBean)->{ + //对controller的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + }else { + paramType = param; + } + String [] validateKeyArr = validateSegmentMap.get(paramType); + if(validateKeyArr != null){ + List valdateKeyList = Lists.newArrayList(validateKeyArr); + ClassBean voBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + voBean.addImportClass("javax.validation.constraints.*"); + classBean.addImportClass("javax.validation.Valid"); + if(CollectionUtils.isNotEmpty(voBean.getFieldBeanList())){ + voBean.getFieldBeanList().forEach(fieldBean -> { + if(valdateKeyList.contains(fieldBean.getSimpleName())){ + if(fieldBean.getFieldType().toLowerCase().equals("string")){ + fieldBean.addAnnotationTag("@NotBlank(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + }else if(fieldBean.getFieldType().toLowerCase().equals("long") || fieldBean.getFieldType().toLowerCase().equals("integer")){ + fieldBean.addAnnotationTag("@NotNull(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + }else { + fieldBean.addAnnotationTag("@NotBlank(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + } + } + }); + } + methodBean.addParamAnnotation("@Valid",0); + } + } + } + }); + } + }); + + + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,classBean)->{ + //对facade的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + }else { + paramType = param; + } + String [] validateKeyArr = validateSegmentMap.get(paramType); + if(validateKeyArr != null){ + List valdateKeyList = Lists.newArrayList(validateKeyArr); + + ClassBean dtoBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + dtoBean.addImportClass("javax.validation.constraints.*"); + if(CollectionUtils.isNotEmpty(dtoBean.getFieldBeanList())){ + dtoBean.getFieldBeanList().forEach(fieldBean -> { + if(valdateKeyList.contains(fieldBean.getSimpleName())){ + if(fieldBean.getFieldType().toLowerCase().equals("string")){ + fieldBean.addAnnotationTag("@NotBlank(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + }else if(fieldBean.getFieldType().toLowerCase().equals("long") || fieldBean.getFieldType().toLowerCase().equals("integer")){ + fieldBean.addAnnotationTag("@NotNull(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + }else { + fieldBean.addAnnotationTag("@NotBlank(message = \" " + fieldBean.getSimpleName() +" 不能为空\")"); + } + } + }); + } + } + } + } + }); + } + }); + } + + + private Map getSegmentMap(String [] modelKeyList, String [] validateKeyList){ + Map validateMap = new HashMap<>(); + if(modelKeyList != null && validateKeyList != null){ + for (String modelKey : modelKeyList){ + validateMap.put(modelKey, validateKeyList); + } + } + return validateMap; + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateParamImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateParamImpl.java new file mode 100644 index 0000000..2679c5c --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateParamImpl.java @@ -0,0 +1,194 @@ +package com.tianhua.codemaker.validate; + +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.bean.segment.SegmentBean; +import com.tianhua.codemaker.enums.CodeSegmentEnum; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Description:通过参数对象内部的参数校验方法校验 + * + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "validateParamService") +public class ValidateParamImpl implements IValidateService { + + @Override + public void dealValidate(PlantUmlContextBean plantUmlContextBean) { + Map validateSegmentMap = new HashMap<>(); + plantUmlContextBean.getClassBeanMap().forEach((s, classBean) -> { + if (classBean.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !classBean.getClassName().equals("PageBO")) { + ExtendFieldBean extendFieldBean = classBean.getExtendFieldBean(); + Map dtoValidateSegmentMap = getSegmentMap(extendFieldBean.getDtoKeyList(),extendFieldBean.getValidateKeyList(),classBean); + Map voValidateSegmentMap = getSegmentMap(extendFieldBean.getVoKeyList(), extendFieldBean.getValidateKeyList(),classBean); + validateSegmentMap.putAll(dtoValidateSegmentMap); + validateSegmentMap.putAll(voValidateSegmentMap); + } + }); + + + if(validateSegmentMap.isEmpty()){ + return; + } + relateValidateSegment(plantUmlContextBean, validateSegmentMap); + } + + /** + * 将构建出来的segment关联到对应的类上 + * 基于工具类校验的话统一放到class vo/dto上 + * @param plantUmlContextBean + * @param validateSegmentMap + */ + private void relateValidateSegment(PlantUmlContextBean plantUmlContextBean, Map validateSegmentMap){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,classBean)->{ + //对controller的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase()+param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + MethodBean checkParamMethodBean = buildCheckParamMethodBean(segmentBean.getCode()); + ClassBean voBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + if(CollectionUtils.isEmpty(voBean.getMethodBeanList())){ + voBean.setMethodBeanList(new ArrayList<>()); + } + voBean.getMethodBeanList().add(checkParamMethodBean); + voBean.addImportClassBatch(segmentBean.getPackageNameList()); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + methodBean.addInvokeRowContentSimple(buildMethodContent(paramVar)); + } + } + } + }); + } + }); + + + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,classBean)->{ + //对facade的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase()+param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + MethodBean checkParamMethodBean = buildCheckParamMethodBean(segmentBean.getCode()); + ClassBean dtoBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(paramType); + if(CollectionUtils.isEmpty(dtoBean.getMethodBeanList())){ + dtoBean.setMethodBeanList(new ArrayList<>()); + } + dtoBean.getMethodBeanList().add(checkParamMethodBean); + dtoBean.addImportClassBatch(segmentBean.getPackageNameList()); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + methodBean.addInvokeRowContentSimple(buildMethodContent(paramVar)); + } + } + } + }); + } + }); + } + + private String buildMethodContent(String paramVar){ + StringBuilder builder = new StringBuilder("ResultDataDto resultDataDto = "+paramVar+".checkParam()\n"); + builder.append("\t\tif(!resultDataDto.isSuccess()){return resultDataDto;}"); + return builder.toString(); + } + + + private MethodBean buildCheckParamMethodBean(String methodContent){ + MethodBean methodBean = new MethodBean(); + methodBean.setMethodName("checkParam()"); + methodBean.setReturnClass("ResultDataDto"); + methodBean.setDesc("参数校验"); + methodBean.setVisibility("public "); + methodBean.setMethodContent(methodContent); + methodBean.setReturnBody(methodContent); + return methodBean; + } + + + private Map getSegmentMap(String [] modelKeyList, String [] validateKeyList, ClassBean boClassBean){ + Map validateMap = new HashMap<>(); + if(modelKeyList != null && validateKeyList != null){ + for (String modelKey : modelKeyList){ + validateMap.put(modelKey, getValidateSegment(validateKeyList,boClassBean)); + } + } + return validateMap; + } + + /** + * 构建验证的代码段内容 + * @param validateKeyList + * @return + */ + private SegmentBean getValidateSegment(String [] validateKeyList, ClassBean boClassBean){ + StringBuilder builder = new StringBuilder(); + Map fieldBeanMap = boClassBean.getFieldBeanList().stream().collect(Collectors.toMap(FieldBean::getSimpleName,o->o)); + + int i = 0; + for (String varName : validateKeyList){ + FieldBean fieldBean = fieldBeanMap.get(varName); + if(fieldBean == null){ + builder.append("\t\t//if(this."+varName+" == null ){ return ResultDataDto.fail(null);}\n"); + continue; + }else { + if(StringHandleUtils.isStrictBasicType(fieldBean.getFieldType())){ + builder.append("\t\t//if(this."+varName+" == 0 ){ return ResultDataDto.fail(null);}\n"); + continue; + } + if(fieldBean.getFieldType().toLowerCase().equals("string")){ + builder.append("\t\tif(this."+varName+" == null || this."+varName+" == \"\"" +"){ return ResultDataDto.fail(null);}\n"); + }else { + builder.append("\t\tif(this."+varName+" == null){ return ResultDataDto.fail(null);}\n"); + } + } + } + + builder.append("\t\treturn ResultDataDto.success();"); + + SegmentBean segmentBean = SegmentBean.getInstance(CodeSegmentEnum.VALIDATE.getTag(),builder.toString()); + segmentBean.importPackageName("com.coderman.utils.response.ResultDataDto"); + + return segmentBean; + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateServiceImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateServiceImpl.java new file mode 100644 index 0000000..9b751ec --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateServiceImpl.java @@ -0,0 +1,143 @@ +package com.tianhua.codemaker.validate; + +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.bean.segment.SegmentBean; +import com.tianhua.codemaker.enums.CodeSegmentEnum; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description:独立构建一个validator包 + * + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +@Component(value = "validateServiceValidator") +public class ValidateServiceImpl implements IValidateService { + @Override + public void dealValidate(PlantUmlContextBean plantUmlContextBean) { + Map validateSegmentMap = new HashMap<>(); + plantUmlContextBean.getClassBeanMap().forEach((s, classBean) -> { + if (classBean.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !classBean.getClassName().equals("PageBO")) { + ExtendFieldBean extendFieldBean = classBean.getExtendFieldBean(); + Map dtoValidateSegmentMap = getSegmentMap(extendFieldBean.getDtoKeyList(),extendFieldBean.getValidateKeyList()); + Map voValidateSegmentMap = getSegmentMap(extendFieldBean.getVoKeyList(), extendFieldBean.getValidateKeyList()); + validateSegmentMap.putAll(dtoValidateSegmentMap); + validateSegmentMap.putAll(voValidateSegmentMap); + } + }); + + if(validateSegmentMap.isEmpty()){ + return; + } + relateValidateSegment(plantUmlContextBean, validateSegmentMap); + } + + + /** + * 将构建出来的segment关联到对应的类上 + * 基于工具类校验的话统一放到class vo/dto上 + * @param plantUmlContextBean + * @param validateSegmentMap + */ + private void relateValidateSegment(PlantUmlContextBean plantUmlContextBean, Map validateSegmentMap){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,classBean)->{ + //对controller的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase() + param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + methodBean.addInvokeRowContentSimple(segmentBean.getCode().replace("${paramObject}",paramVar)); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + } + + } + } + }); + } + }); + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,classBean)->{ + //对facade的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase() + param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + methodBean.addInvokeRowContentSimple(segmentBean.getCode().replace("${paramObject}",paramVar)); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + } + + } + } + }); + } + }); + + } + + /** + * 构建代码段 + * @param modelKeyList + * @param validateKeyList + * @return + */ + private Map getSegmentMap(String [] modelKeyList, String [] validateKeyList){ + Map validateMap = new HashMap<>(); + if(modelKeyList != null && validateKeyList != null){ + for (String modelKey : modelKeyList){ + //todo replace paramObject to constant + String validateCodeSegment = "ParamCheckUtils.check(${paramObject}, " + getValidateStr(validateKeyList) +")"; + SegmentBean segmentBean = SegmentBean.getInstance(CodeSegmentEnum.VALIDATE.getTag(),validateCodeSegment); + segmentBean.importPackageName("com.coderman.check.ParamCheckUtils"); + validateMap.put(modelKey,segmentBean); + } + } + return validateMap; + } + + private String getValidateStr(String [] validateKeyList){ + if(validateKeyList.length == 1){ + return "\"" + validateKeyList[0] + "\""; + } + String valideStr = StringUtils.join(validateKeyList,"\", \""); + return "\"" + valideStr + "\""; + } + +} diff --git a/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateUtilImpl.java b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateUtilImpl.java new file mode 100644 index 0000000..966617b --- /dev/null +++ b/codemaker-parent/codemaker-apiImpl/src/main/java/com/tianhua/codemaker/validate/ValidateUtilImpl.java @@ -0,0 +1,133 @@ +package com.tianhua.codemaker.validate; + +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.ExtendFieldBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.bean.segment.SegmentBean; +import com.tianhua.codemaker.enums.CodeSegmentEnum; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description:基于paramCheckUtil工具类实现校验逻辑 + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "validateUtilService") +public class ValidateUtilImpl implements IValidateService { + + @Override + public void dealValidate(PlantUmlContextBean plantUmlContextBean) { + Map validateSegmentMap = new HashMap<>(); + plantUmlContextBean.getClassBeanMap().forEach((s, classBean) -> { + if (classBean.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !classBean.getClassName().equals("PageBO")) { + ExtendFieldBean extendFieldBean = classBean.getExtendFieldBean(); + Map dtoValidateSegmentMap = getSegmentMap(extendFieldBean.getDtoKeyList(),extendFieldBean.getValidateKeyList()); + Map voValidateSegmentMap = getSegmentMap(extendFieldBean.getVoKeyList(), extendFieldBean.getValidateKeyList()); + validateSegmentMap.putAll(dtoValidateSegmentMap); + validateSegmentMap.putAll(voValidateSegmentMap); + } + }); + + if(validateSegmentMap.isEmpty()){ + return; + } + relateValidateSegment(plantUmlContextBean, validateSegmentMap); + } + + /** + * 将构建出来的segment关联到对应的类上 + * 基于工具类校验的话统一放到class vo/dto上 + * @param plantUmlContextBean + * @param validateSegmentMap + */ + private void relateValidateSegment(PlantUmlContextBean plantUmlContextBean, Map validateSegmentMap){ + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().forEach((k,classBean)->{ + //对controller的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.CONTROLLER.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase() + param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + methodBean.addInvokeRowContentSimple(segmentBean.getCode().replace("${paramObject}",paramVar)); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + } + + } + } + }); + } + }); + plantUmlContextBean.getDerivedPlantUmlContextBean().getInterfaceBeanMap().forEach((k,classBean)->{ + //对facade的入参数进行参数校验方法植入 + if(classBean.getClassName().toLowerCase().endsWith(DomainDerivedElementEnum.FACADE.getElement()) ) { + classBean.getMethodBeanList().forEach(methodBean -> { + String [] paramArr = methodBean.getParamArr(); + if(paramArr != null){ + for (String param : paramArr){ + String paramType = ""; + String paramVar = ""; + if(param.contains(" ")){ + paramType = param.split(" ")[0]; + paramVar = param.split(" ")[1]; + }else { + paramType = param; + paramVar = param.substring(0,1).toLowerCase() + param.substring(1); + } + + SegmentBean segmentBean = validateSegmentMap.get(paramType); + if(segmentBean != null){ + methodBean.addInvokeRowContentSimple(segmentBean.getCode().replace("${paramObject}",paramVar)); + classBean.addImportClassBatch(segmentBean.getPackageNameList()); + } + + } + } + }); + } + }); + + } + + private Map getSegmentMap(String [] modelKeyList, String [] validateKeyList){ + Map validateMap = new HashMap<>(); + if(modelKeyList != null && validateKeyList != null){ + for (String modelKey : modelKeyList){ + //todo replace paramObject to constant + String validateCodeSegment = "ParamCheckUtils.check(${paramObject}, " + getValidateStr(validateKeyList) +")"; + SegmentBean segmentBean = SegmentBean.getInstance(CodeSegmentEnum.VALIDATE.getTag(),validateCodeSegment); + segmentBean.importPackageName("com.coderman.check.ParamCheckUtils"); + validateMap.put(modelKey,segmentBean); + } + } + return validateMap; + } + + private String getValidateStr(String [] validateKeyList){ + if(validateKeyList.length == 1){ + return "\"" + validateKeyList[0] + "\""; + } + String valideStr = StringUtils.join(validateKeyList,"\", \""); + return "\"" + valideStr + "\""; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/package-info.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/package-info.java deleted file mode 100644 index a0d5ed7..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.coderman.codemaker; \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicCodeService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicCodeService.java deleted file mode 100644 index 459cd58..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicCodeService.java +++ /dev/null @@ -1,711 +0,0 @@ -package com.coderman.codemaker.service; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.config.AppServiceConfig; - -import com.coderman.codemaker.enums.ModuleEnum; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.template.FreemarkerService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Description: - * 新版本的应用模块代码写服务,屏蔽底层写文件的细节,通过app和module隔离api和底层实现 - * 做到一套api支持多种应用框架风格的代码生成。 - * date: 2021/6/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ - -@Component -public class WriteDynamicCodeService { - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private FreemarkerService freemarkerService; - - @Autowired - private WriteDynamicDDDService writeDynamicDDDModuleService; - - @Autowired - private WriteCodeService writeCodeService; - - - @Autowired - private WriteApiDocService writeApiDocService; - - - - /** - * 写BO文件 - * @param classBeanList - */ - public void writeBO(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.BUSINESS_OBJECT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeBO(classBeanList,writeFileService,null); - } - - /** - * 写msgbody文件 - * @param classBeanList - */ - public void writeMsgBody(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MESSAGE_BODY.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeMsgBody(classBeanList,writeFileService,null); - } - - /** - * 写event文件 - * @param classBeanList - */ - public void writeDomainEvent(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.EVENT_BODY.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDomainEvent(classBeanList,writeFileService,null); - } - - /** - * 写domaingataway文件 - * @param classBeanList - */ - public void writeDomainGataway(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.GATAWAY.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeGataWay(classBeanList,writeFileService,null); - } - - /** - * 写domainrepository文件 - * @param classBeanList - */ - public void writeDomainRepository(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.GATAWAY.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeRepository(classBeanList,writeFileService,null); - } - - - /** - * 写dynamicMapper文件 - * @param classBeanList - */ - public void writeDynamicMapper(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MAPPER_DDD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDynamicMapper(classBeanList,writeFileService,null); - } - - /** - * 写dynamicMapperxml文件 - * @param classBeanList - */ - public void writeDynamicMapperXml(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MAPPER_XML_DDD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDynamicMapperXml(classBeanList,writeFileService,null); - } - - /** - * 写domaingatawayimpl文件 - * @param gatawayImplBeanList - */ - public void writeGatawayImpl(List gatawayImplBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.GATAWAY_IMPL.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeGatawayImpl(gatawayImplBeanList,writeFileService,null); - } - - /** - * 写domainrepositoryimpl文件 - * @param repositoryImplBeanList - */ - public void writeRepositoryImpl(List repositoryImplBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.REPOSITORY_IMPL.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeRepositoryImpl(repositoryImplBeanList,writeFileService,null); - } - - /** - * 写command文件 - * @param classBeanList - */ - public void writeCommand(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.CMD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAppCommand(classBeanList,writeFileService,null); - } - - /** - * 写factory文件 - * @param classBeanList - */ - public void writeFactory(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.FACTORY.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeFactory(classBeanList,writeFileService,null); - } - - - /** - * 写cache文件 - * @param classBeanList - */ - public void writeCache(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.CACHE.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeCache(classBeanList,writeFileService,null); - } - - /** - * 写applistener文件 - * @param classBeanList - */ - public void writeAppListener(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MQ_LISTENER.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAppListner(classBeanList,writeFileService,null); - } - - /** - * 写mqproducer文件 - * @param classBeanList - */ - public void writeMqProducer(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MQ_PRODUCER.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeMqProducer(classBeanList,writeFileService,null); - } - - /** - * 写mqconsumer文件 - * @param classBeanList - */ - public void writeMqConsumer(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MQ_CONSUMER.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeMqConsumer(classBeanList,writeFileService,null); - } - - /** - * 写mqhandler文件 - * @param classBeanList - */ - public void writeMqHandler(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MQ_HANDLER.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeMqHandler(classBeanList,writeFileService,null); - } - - /** - * 写AppExeImpl文件 - * @param classBeanList - */ - public void writeAppExeImpl(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.CMD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAppExeImpl(classBeanList,writeFileService,null); - } - - /** - * 写AppExeInterface文件 - * @param interfaceBeanList - */ - public void writeAppExeInterface(List interfaceBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.EXE.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAppExeInterface(interfaceBeanList,writeFileService,null); - } - - - /** - * 写dtoboconvert文件 - * @param dtoboConvertBeanList - */ - public void writeDTOBOConvert(List dtoboConvertBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.DTOBO_CONVERT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDtoBOConvert(dtoboConvertBeanList,writeFileService); - } - - /** - * 写voboconvert文件 - * @param dtoboConvertBeanList - */ - public void writeVOBOConvert(List dtoboConvertBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.VOBO_CONVERT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeVoBOConvert(dtoboConvertBeanList,writeFileService); - } - - /** - * 写doboconvert文件 - * @param doboConvertBeanList - */ - public void writeDOBOConvert(List doboConvertBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.DOBO_CONVERT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDoBOConvert(doboConvertBeanList,writeFileService); - } - - /** - * 写dto2dtoconvert文件 - * @param doboConvertBeanList - */ - public void writeDTO2DTOConvert(List doboConvertBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.DOBO_CONVERT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDTO2DTOConvert(doboConvertBeanList,writeFileService); - } - - - /** - * 写acl.param文件 - * @param classBeanList - */ - public void writeAclInterfaceParam(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.ACL_PARAM.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeACLParam(classBeanList,writeFileService,null); - } - - /** - * 写AppExeInterface文件 - * @param interfaceBeanList - */ - public void writeAclInterface(List interfaceBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.ACL.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAclInterface(interfaceBeanList,writeFileService,null); - } - - - /** - * 写InfrastAclImpl文件 - * @param classBeanList - */ - public void writeAclInterfaceImpl(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.ACL_IMPL.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeAclInterfaceImpl(classBeanList,writeFileService,null); - } - - /** - * 写valueobject文件 - * @param classBeanList - */ - public void writeValueObject(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.VALUE_OBJECT.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeValueObject(classBeanList,writeFileService,null); - } - - /** - * 写enum文件 - * @param classBeanList - */ - public void writeEnum(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.ENUM.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeEnum(classBeanList,writeFileService,null); - } - - - /** - * 写apienum文件 - * @param classBeanList - */ - public void writeAPIEnum(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_ENUM.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeEnum(classBeanList,writeFileService,null); - } - - /** - * 写DTO文件 - * @param classBeanList - */ - public void writeDTO(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.DTO.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDTO(classBeanList,writeFileService); - } - - /** - * 写feignDTO文件 - * @param classBeanList - */ - public void writeFeignDTO(List classBeanList) { - - IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(ModuleEnum.COLA_FEIGN_API.getModuleName()); - //只有springcloud cola需要写feign dto - if (writeFileService == null - || appServiceConfig.getApplicationType().equals(ModuleEnum.DUBBO_API.getAppName()) - || appServiceConfig.getApplicationType().equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { - return; - } - - - writeDynamicDDDModuleService.writeDTO(classBeanList,writeFileService); - } - - - /** - * 写VO文件 - * @param classBeanList - */ - public void writeVO(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.VO.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeVO(classBeanList,writeFileService); - } - - /** - * 写controller文件 - * @param classBeanList - */ - public void writeController(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.CONTROLLER.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeController(classBeanList,writeFileService); - } - - /** - * 写facade文件 - * @param classBeanList - */ - public void writeFacade(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.FACADE_DDD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeFacade(classBeanList,writeFileService); - } - - /** - * 写feign文件 - * @param classBeanList - */ - public void writeFeign(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.FEIGN.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeFeign(classBeanList,writeFileService); - } - - /** - * 写facadeimpl文件 - * @param classBeanList - */ - public void writeFacadeImpl(List classBeanList) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName()); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeFacadeImpl(classBeanList,writeFileService); - } - - /** - * 写service文件 - * - * @param content - * @param humpClassName - */ - public void writeService(String content, String humpClassName) { - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.SERVICE.getTempFileName()); - if (writeFileService == null) { - return; - } - WriteContentBean writeContentBean = WriteContentBean.builder().content(content) - .templateName(TemplateFileEnum.SERVICE.getTempFileName()) - .humpClassName(humpClassName).build(); - writeFileService.writeContent(writeContentBean); - } - - /** - * 一次性生成所有表的模块代码,同时解析plantUML的类图结合起来 - * @param allMetaDataMap - */ - public void writeAllWithDDD(Map allMetaDataMap){ - List boClassBeanList = (List)allMetaDataMap.get("domainbo"); - this.writeBO(boClassBeanList); - - List valueObjectBeanList = (List)allMetaDataMap.get("domainvalueobject"); - List enumBeanList = (List)allMetaDataMap.get("valueobjectenum"); - this.writeValueObject(valueObjectBeanList); - this.writeEnum(enumBeanList); - - List apiEnumBeanList = (List)allMetaDataMap.get("apienum"); - this.writeAPIEnum(apiEnumBeanList); - - List msgClassBeanList = (List)allMetaDataMap.get("domainmsg"); - this.writeMsgBody(msgClassBeanList); - - List eventClassBeanList = (List)allMetaDataMap.get("domainevent"); - this.writeDomainEvent(eventClassBeanList); - - List gatawayBeanList = (List)allMetaDataMap.get("gataway"); - this.writeDomainGataway(gatawayBeanList); - - List repositoryBeanList = (List)allMetaDataMap.get("repository"); - this.writeDomainRepository(repositoryBeanList); - - List gatawayImplBeanList = (List)allMetaDataMap.get("gatawayimpl"); - this.writeGatawayImpl(gatawayImplBeanList); - - List repositoryImplBeanList = (List)allMetaDataMap.get("repositoryimpl"); - this.writeRepositoryImpl(repositoryImplBeanList); - - List aclBeanList = (List)allMetaDataMap.get("infrastacl"); - List aclParamBeanList = (List)allMetaDataMap.get("infrastaclparam"); - List aclImplBeanList = (List)allMetaDataMap.get("infrastaclimpl"); - - this.writeAclInterface(aclBeanList); - this.writeAclInterfaceParam(aclParamBeanList); - this.writeAclInterfaceImpl(aclImplBeanList); - - List commandBeanList = (List)allMetaDataMap.get("cmd"); - this.writeCommand(commandBeanList); - - List exeBeanList = (List)allMetaDataMap.get("exeClass"); - List exeInterfaceBeanList = (List)allMetaDataMap.get("exeInterface"); - this.writeAppExeImpl(exeBeanList); - this.writeAppExeInterface(exeInterfaceBeanList); - - List factoryBeanList = (List)allMetaDataMap.get("domainfactory"); - this.writeFactory(factoryBeanList); - - List appListenerBeanList = (List)allMetaDataMap.get("applistener"); - this.writeAppListener(appListenerBeanList); - - List mqProducerBeanList = (List)allMetaDataMap.get("mqproducer"); - this.writeMqProducer(mqProducerBeanList); - - List mqConsumerBeanList = (List)allMetaDataMap.get("mqconsumer"); - this.writeMqConsumer(mqConsumerBeanList); - - List mqHandlerBeanList = (List)allMetaDataMap.get("mqhandler"); - this.writeMqHandler(mqHandlerBeanList); - - List cacheBeanList = (List)allMetaDataMap.get("cache"); - this.writeCache(cacheBeanList); - - List voClassBeanList = (List)allMetaDataMap.get("adaptervo"); - this.writeVO(voClassBeanList); - - List controllerBeanList = (List)allMetaDataMap.get("controller"); - this.writeController(controllerBeanList); - - - List derivefeignInterfaceBeanList = (List)allMetaDataMap.get("derivefeign"); - this.writeFeign(derivefeignInterfaceBeanList); - - - List derivefacadeInterfaceBeanList = (List)allMetaDataMap.get("derivefacade"); - this.writeFacade(derivefacadeInterfaceBeanList); - - List derivefacadeimplclassBeanList = (List)allMetaDataMap.get("derivefacadeimpl"); - this.writeFacadeImpl(derivefacadeimplclassBeanList); - - List dtoClassBeanList = (List)allMetaDataMap.get("derivedto"); - this.writeDTO(dtoClassBeanList); - - List dtoboconvertBeanList = (List)allMetaDataMap.get("dtoboconvert"); - this.writeDTOBOConvert(dtoboconvertBeanList); - - List voboconvertBeanList = (List)allMetaDataMap.get("voboconvert"); - this.writeVOBOConvert(voboconvertBeanList); - - List doboconvertBeanList = (List)allMetaDataMap.get("doboconvert"); - this.writeDOBOConvert(doboconvertBeanList); - - List dynamicMapperBeanList = (List)allMetaDataMap.get("dynamicmapper"); - this.writeDynamicMapper(dynamicMapperBeanList); - - List dynamicMapperXmlBeanList = (List)allMetaDataMap.get("dynamicmapperxml"); - this.writeDynamicMapperXml(dynamicMapperXmlBeanList); - - Map tableBeanMap = (Map)allMetaDataMap.get("table"); - Map> columnBeanListMap = (Map>)allMetaDataMap.get("columns"); - Map varMap = new HashMap<>(); - - List dto2dtoConvertInterfaceList = (List)allMetaDataMap.get("convertdto2dto"); - - this.writeFeignDTO(dtoClassBeanList); - this.writeDTO2DTOConvert(dto2dtoConvertInterfaceList); - - - - tableBeanMap.forEach((k,v)->{ - varMap.put("table", v); - varMap.put("columns", columnBeanListMap.get(k)); - varMap.put("package", allMetaDataMap.get("package")); - varMap.put("author", allMetaDataMap.get("author")); - varMap.put("packageInfrast", allMetaDataMap.get("packageInfrast")); - varMap.put("packageDomain", allMetaDataMap.get("packageDomain")); - - String templateContent = freemarkerService.parseTpl(TemplateFileEnum.DATA_OBJECT.getTempFileName(),varMap); - writeCodeService.writeDO(templateContent,v.getHumpClassName()); - - templateContent = freemarkerService.parseTpl(TemplateFileEnum.TEST.getTempFileName(),varMap); - writeCodeService.writeTest(templateContent,v.getHumpClassName()); - }); - - //写公共服务类 - this.writeCommon(varMap,""); - //渲染e-r图 - writeCodeService.writeERPicture(tableBeanMap,columnBeanListMap); - - //进行文档生成 - if(appServiceConfig.getApiDocGenerator()){ - this.writeHttpApiDoc(controllerBeanList,voClassBeanList); - this.writeRpcApiDoc(derivefacadeInterfaceBeanList,dtoClassBeanList); - this.writeRpcApiDoc(derivefeignInterfaceBeanList,dtoClassBeanList); - - } - - } - - /** - * 写http接口文档 - * @param controllerBeanList - */ - private void writeHttpApiDoc(List controllerBeanList,List voBeanList){ - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_HTTP.getTempFileName()); - if (writeFileService == null) { - return; - } - writeApiDocService.writeHttpApiDoc(controllerBeanList,writeFileService,voBeanList); - } - - /** - * 写rpc接口文档 - * @param facadeBeanList - * @param dtoBeanList - */ - private void writeRpcApiDoc(List facadeBeanList,List dtoBeanList){ - IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_RPC.getTempFileName()); - if (writeFileService == null) { - return; - } - writeApiDocService.writeRpcApiDoc(facadeBeanList,writeFileService,dtoBeanList); - } - - /** - * 写公共基础服务类 - * - * @param varMap - */ - public void writeCommon(Map varMap, String fast) { - - Map> initClassMap = appServiceConfig.getInitClassMapList(); - if(initClassMap == null || initClassMap.isEmpty()){ - return; - } - - for (Map.Entry> entry : initClassMap.entrySet()){ - for (String classTemplate : entry.getValue()){ - String clazzContent = freemarkerService.parseTplCommon(classTemplate, varMap); - writeCodeService.writeInitClass(entry.getKey(),clazzContent,classTemplate); - } - } - String facadeAop = freemarkerService.parseTpl(fast + TemplateFileEnum.FACADE_AOP.getTempFileName(), varMap); - writeCodeService.writeFacadeAop(facadeAop); - } - - - /** - * 写dynamicddd模块代码生成 - * - * @param dynamicDDDMap - */ - public void writeDynamicDDD(Map dynamicDDDMap) { - IWriteFileService writeFileService = appServiceConfig.getDynamicDDDWriteService(); - if (writeFileService == null) { - return; - } - writeDynamicDDDModuleService.writeDynamicDDD(dynamicDDDMap, writeFileService); - } - - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicDDDService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicDDDService.java deleted file mode 100644 index 42e9e00..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteDynamicDDDService.java +++ /dev/null @@ -1,710 +0,0 @@ -package com.coderman.codemaker.service; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.template.FreemarkerService; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -/** - * Description: - * date: 2021/6/30 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class WriteDynamicDDDService { - @Autowired - private FreemarkerService freemarkerService; - - /** - * 写dynamicddd模块代码生成 - * @param dynamicDDDMap - */ - public void writeDynamicDDD(Map dynamicDDDMap, IWriteFileService writeFileService){ - //写bo - List classBeanList = (List)dynamicDDDMap.get("domainbo"); - writeBO(classBeanList,writeFileService,"ddd"); - - //写valueobject - List valueObjectBeanList = (List)dynamicDDDMap.get("domainvalueobject"); - writeValueObject(valueObjectBeanList,writeFileService,"ddd"); - - //写接口 - List repositoryInterfaceBeanList = (List)dynamicDDDMap.get("repository"); - List gatawayInterfaceBeanList = (List)dynamicDDDMap.get("gataway"); - repositoryInterfaceBeanList.addAll(gatawayInterfaceBeanList); - writeInterfaceAndImpl(repositoryInterfaceBeanList,writeFileService,"ddd"); - - //写枚举 - List enumBeanList = (List)dynamicDDDMap.get("valueobjectenum"); - writeEnum(enumBeanList,writeFileService,"ddd"); - - //写msgbody - List domainMsgBeanList = (List)dynamicDDDMap.get("domainmsg"); - writeMsgBody(domainMsgBeanList,writeFileService,"ddd"); - - - //写domainevent - List domainEventBeanList = (List)dynamicDDDMap.get("domainevent"); - writeDomainEvent(domainEventBeanList,writeFileService,"ddd"); - - //写factory - List domainFactoryBeanList = (List)dynamicDDDMap.get("domainfactory"); - writeFactory(domainFactoryBeanList,writeFileService,"ddd"); - - //写防腐层接口 - List infrastAclInterfaceList = (List)dynamicDDDMap.get("infrastacl"); - writeAclInterface(infrastAclInterfaceList,writeFileService,"ddd"); - - //写防腐层接口 - List infrastAclInterfaceImplList = (List)dynamicDDDMap.get("infrastaclimpl"); - writeAclInterfaceImpl(infrastAclInterfaceImplList,writeFileService,"ddd"); - - //写防腐层接口需要的参数 - List infrastAclParamClassList = (List)dynamicDDDMap.get("infrastaclparam"); - writeACLParam(infrastAclParamClassList,writeFileService,"ddd"); - - //写app层的命令服务 - List appCommandClassList = (List)dynamicDDDMap.get("cmd"); - writeAppCommand(appCommandClassList,writeFileService,"ddd"); - - //写app.exe interface - List appExeInterfaceList = (List)dynamicDDDMap.get("exeInterface"); - writeAppExeInterface(appExeInterfaceList,writeFileService,"ddd"); - - //写app.exeImpl - List appExeClassImplList = (List)dynamicDDDMap.get("exeClass"); - writeAppExeImpl(appExeClassImplList,writeFileService,"ddd"); - } - - /** - * 写BO - * @param classBeanList - * @param writeFileService - */ - public void writeBO(List classBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if (StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.BUSINESS_OBJECT_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写msgbody - * @param classBeanList - * @param writeFileService - */ - public void writeMsgBody(List classBeanList, IWriteFileService writeFileService,String dddTag){ - - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.MESSAGE_BODY.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.MESSAGE_BODY.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.MESSAGE_BODY); - writeFileService.writeContent(writeContentBean); - } - } - - - - /** - * 写domainEvent - * @param classBeanList - * @param writeFileService - */ - public void writeDomainEvent(List classBeanList, IWriteFileService writeFileService,String dddTag){ - - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.EVENT_BODY.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.EVENT_BODY.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.EVENT_BODY); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写DTO - * @param classBeanList - * @param writeFileService - */ - public void writeDTO(List classBeanList, IWriteFileService writeFileService){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.DTO_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.DTO_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写VO - * @param classBeanList - * @param writeFileService - */ - public void writeVO(List classBeanList, IWriteFileService writeFileService){ - - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.VO_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.VO_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写VO - * @param classBeanList - * @param writeFileService - */ - public void writeController(List classBeanList, IWriteFileService writeFileService){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.CONTROLLER_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.CONTROLLER_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写facadeimpl - * @param classBeanList - * @param writeFileService - */ - public void writeFacadeImpl(List classBeanList, IWriteFileService writeFileService){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.FACADE_IMPL_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.FACADE_IMPL); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写facade - * @param classBeanList - * @param writeFileService - */ - public void writeFacade(List classBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : classBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.FACADE_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(boContent,TemplateFileEnum.FACADE); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写facade - * @param classBeanList - * @param writeFileService - */ - public void writeFeign(List classBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : classBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String boContent = freemarkerService.parseTpl(TemplateFileEnum.FEIGN_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(boContent,TemplateFileEnum.FEIGN); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写valueobject - * @param classBeanList - * @param writeFileService - */ - public void writeValueObject(List classBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.VALUE_OBJECT.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.VALUE_OBJECT.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.VALUE_OBJECT); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写接口和实现 - * @param repositoryInterfaceBeanList - * @param writeFileService - */ - private void writeInterfaceAndImpl(List repositoryInterfaceBeanList, IWriteFileService writeFileService,String dddTag){ - for (InterfaceBean interfaceBean : repositoryInterfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent; - if (StringUtils.isNotEmpty(dddTag)){ - interfaceContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - }else { - interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.GATAWAY); - writeFileService.writeContent(writeContentBean); - - //写接口实现 - String interfaceImplContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), varMap); - WriteContentBean writeContentBean2 = interfaceBean.buildWriteContentBean(interfaceImplContent,TemplateFileEnum.GATAWAY_IMPL); - writeFileService.writeContent(writeContentBean2); - } - } - - /** - * 写gataway接口和repository接口 - * @param gataWayBeanList - * @param writeFileService - */ - public void writeGataWay(List gataWayBeanList, IWriteFileService writeFileService,String dddTag) { - for (InterfaceBean interfaceBean : gataWayBeanList) { - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.GATAWAY); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写gataway接口和repository接口 - * @param repositoryBeanList - * @param writeFileService - */ - public void writeRepository(List repositoryBeanList, IWriteFileService writeFileService,String dddTag) { - for (InterfaceBean interfaceBean : repositoryBeanList) { - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.REPOSITORY); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写dynamicmapper - * @param dynamicMapperBeanList - * @param writeFileService - */ - public void writeDynamicMapper(List dynamicMapperBeanList, IWriteFileService writeFileService,String dddTag) { - for (InterfaceBean interfaceBean : dynamicMapperBeanList) { - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.MAPPER_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.MAPPER_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写dynamicmapperxml - * @param dynamicMapperXmlBeanList - * @param writeFileService - */ - public void writeDynamicMapperXml(List dynamicMapperXmlBeanList, IWriteFileService writeFileService,String dddTag) { - for (ClassBean classBean : dynamicMapperXmlBeanList) { - Map varMap = classBean.buildVarMap(); - if(CollectionUtils.isNotEmpty(classBean.getImportClassList())){ - Optional doPackageName = classBean.getImportClassList().stream().filter(importClassName -> importClassName.toLowerCase().endsWith(TemplateFileEnum.DATA_OBJECT.getTempFileName())).findFirst(); - if(doPackageName.isPresent()){ - varMap.put("doPackageName",doPackageName.get()); - } - } - - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.MAPPER_XML_DDD); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写gataway实现 - * @param gatawayImplInterfaceBeanList - * @param writeFileService - */ - public void writeGatawayImpl(List gatawayImplInterfaceBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : gatawayImplInterfaceBeanList){ - Map varMap = classBean.buildVarMap(); - //写接口实现 - String interfaceImplContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(interfaceImplContent,TemplateFileEnum.GATAWAY_IMPL); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写repository实现 - * @param repositoryImplInterfaceBeanList - * @param writeFileService - */ - public void writeRepositoryImpl(List repositoryImplInterfaceBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : repositoryImplInterfaceBeanList){ - Map varMap = classBean.buildVarMap(); - //写接口实现 - String interfaceImplContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), varMap); - WriteContentBean writeContentBean = classBean.buildWriteContentBean(interfaceImplContent,TemplateFileEnum.REPOSITORY_IMPL); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写枚举 - * @param enumBeanList - * @param writeFileService - */ - public void writeEnum(List enumBeanList, IWriteFileService writeFileService,String dddTag){ - //写枚举 - for (EnumBean enumBean : enumBeanList){ - Map varMap = enumBean.buildVarMap(); - String enumContent; - if(StringUtils.isNotEmpty(dddTag)){ - enumContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.ENUM.getTempFileName(), varMap); - }else { - enumContent = freemarkerService.parseTpl(TemplateFileEnum.ENUM.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = enumBean.buildWriteContentBean(enumContent,TemplateFileEnum.ENUM); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写factory - * @param domainFactoryBeanList - * @param writeFileService - */ - public void writeFactory(List domainFactoryBeanList, IWriteFileService writeFileService,String dddTag){ - //写factory - for (ClassBean classBean : domainFactoryBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.FACTORY.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.FACTORY.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.FACTORY); - writeFileService.writeContent(writeContentBean); - } - } - /** - * 写cache - * @param domainFactoryBeanList - * @param writeFileService - */ - public void writeCache(List domainFactoryBeanList, IWriteFileService writeFileService,String dddTag){ - //写factory - for (ClassBean classBean : domainFactoryBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.CACHE.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.CACHE.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.CACHE); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写app.listener - * @param appListenerBeanList - * @param writeFileService - */ - public void writeAppListner(List appListenerBeanList, IWriteFileService writeFileService,String dddTag){ - //写app.listener - for (ClassBean classBean : appListenerBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.MQ_LISTENER.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.MQ_LISTENER.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.MQ_LISTENER); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写infrast.mq.producer - * @param appListenerBeanList - * @param writeFileService - */ - public void writeMqProducer(List appListenerBeanList, IWriteFileService writeFileService,String dddTag){ - //写infrast.mq.producer - for (ClassBean classBean : appListenerBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.MQ_PRODUCER.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.MQ_PRODUCER.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.MQ_PRODUCER); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写infrast.mq.consumer - * @param appListenerBeanList - * @param writeFileService - */ - public void writeMqConsumer(List appListenerBeanList, IWriteFileService writeFileService,String dddTag){ - //写infrast.mq.consumer - for (ClassBean classBean : appListenerBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.MQ_CONSUMER.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.MQ_CONSUMER.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.MQ_CONSUMER); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写infrast.mq.handler - * @param appListenerBeanList - * @param writeFileService - */ - public void writeMqHandler(List appListenerBeanList, IWriteFileService writeFileService,String dddTag){ - //写infrast.mq.handler - for (ClassBean classBean : appListenerBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.MQ_HANDLER.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.MQ_HANDLER.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.MQ_HANDLER); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写infrastacl接口 - * @param aclInterfaceBeanList - * @param writeFileService - */ - public void writeAclInterface(List aclInterfaceBeanList, IWriteFileService writeFileService,String dddTag){ - for (InterfaceBean interfaceBean : aclInterfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - - String interfaceContent; - if(StringUtils.isNotEmpty(dddTag)){ - interfaceContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.ACL.getTempFileName(), varMap); - }else { - interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.ACL.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.ACL); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写infrastaclImpl - * @param infrastAclImplBeanList - * @param writeFileService - */ - public void writeAclInterfaceImpl(List infrastAclImplBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : infrastAclImplBeanList){ - Map varMap = classBean.buildVarMap(); - String interfaceImplContent; - if(StringUtils.isNotEmpty(dddTag)){ - interfaceImplContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.ACL_IMPL.getTempFileName(), varMap); - }else { - interfaceImplContent = freemarkerService.parseTpl(TemplateFileEnum.ACL_IMPL.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(interfaceImplContent,TemplateFileEnum.ACL_IMPL); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写acl.param - * @param classBeanList - * @param writeFileService - */ - public void writeACLParam(List classBeanList, IWriteFileService writeFileService,String dddTag){ - - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - //使用BO的模板 - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.ACL_PARAM); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写app.cmd - * @param classBeanList - * @param writeFileService - */ - public void writeAppCommand(List classBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - //使用BO的模板 - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.BUSINESS_OBJECT_DDD.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.CMD); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写app.exe--->class 接口实现 - * @param classBeanList - * @param writeFileService - */ - public void writeAppExeImpl(List classBeanList, IWriteFileService writeFileService,String dddTag){ - for (ClassBean classBean : classBeanList){ - Map varMap = classBean.buildVarMap(); - String boContent; - if(StringUtils.isNotEmpty(dddTag)){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.EXE_IMPL.getTempFileName(), varMap); - if(StringUtils.isEmpty(classBean.getRelationClassStr())){ - boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), varMap); - } - }else { - boContent = freemarkerService.parseTpl(TemplateFileEnum.EXE_IMPL.getTempFileName(), varMap); - if(StringUtils.isEmpty(classBean.getRelationClassStr())){ - boContent = freemarkerService.parseTpl(TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), varMap); - } - } - WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.EXE); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写app.exe--->interface 接口 - * @param interfaceBeanList - * @param writeFileService - */ - public void writeAppExeInterface(List interfaceBeanList, IWriteFileService writeFileService,String dddTag){ - for (InterfaceBean interfaceBean : interfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - //借用gataway的模板 - String interfaceContent; - if(StringUtils.isNotEmpty(dddTag)){ - interfaceContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - }else { - interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); - } - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.EXE); - writeFileService.writeContent(writeContentBean); - } - } - - - /** - * 写dtobo-convert 接口 - * @param interfaceBeanList - * @param writeFileService - */ - public void writeDtoBOConvert(List interfaceBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : interfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.CONVERT.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.CONVERT); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写vobo-convert 接口 - * @param interfaceBeanList - * @param writeFileService - */ - public void writeVoBOConvert(List interfaceBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : interfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.CONVERT.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.CONVERT); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写dobo-convert 接口 - * @param interfaceBeanList - * @param writeFileService - */ - public void writeDoBOConvert(List interfaceBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : interfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.CONVERT.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.CONVERT); - writeFileService.writeContent(writeContentBean); - } - } - - /** - * 写dto2dto-convert 接口 - * @param interfaceBeanList - * @param writeFileService - */ - public void writeDTO2DTOConvert(List interfaceBeanList, IWriteFileService writeFileService){ - for (InterfaceBean interfaceBean : interfaceBeanList){ - Map varMap = interfaceBean.buildVarMap(); - String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.CONVERT.getTempFileName(), varMap); - WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.DTO2DTO_CONVERT); - writeFileService.writeContent(writeContentBean); - } - } -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeElementRegistService.java b/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeElementRegistService.java deleted file mode 100644 index d9399a7..0000000 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeElementRegistService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.coderman.codemaker.service.invoker; - -import com.coderman.codemaker.api.ICompRegistService; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.config.AppServiceConfig; -import org.assertj.core.util.Lists; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * Description:预先读取plantUML调用时序图文档,以及补充其他内置的工具类 - * 如BaseEvent,AppEventPublisher类等 - * date: 2021/10/25 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -@Service -public class InvokeElementRegistService { - - @Autowired - private AppServiceConfig appServiceConfig; - - @Autowired - private ICompRegistService iCompRegistService; - - /** - * 注册独立类和工具 - * @param plantUmlContextBean - */ - public void registDefaultClass(PlantUmlContextBean plantUmlContextBean){ - ComponentContextBean componentContextBean = iCompRegistService.registSingleClass(); - - - plantUmlContextBean.getCompContextBeanMap().put("singleClass",componentContextBean); - - - } - - /** - * 注册事件发布器 - * @param plantUmlContextBean - */ - /*private void registAppEventPublisher(PlantUmlContextBean plantUmlContextBean){ - ClassBean classBean = new ClassBean(); - classBean.setClassDesc("事件发布器"); - classBean.setClassName("AppEventPublisher"); - classBean.setDerived(false); - classBean.setPackageName(appServiceConfig.getPackage()+".utils"); - classBean.setPlantUMLPackage("utils"); - MethodBean methodBean = new MethodBean(); - methodBean.setReturnBody("void"); - methodBean.setMethodName("publish(T t)"); - methodBean.setStatic(false); - methodBean.setVisibility("public"); - methodBean.setDesc("发布事件入口"); - methodBean.setClassName("AppEventPublisher"); - classBean.setMethodBeanList(Lists.newArrayList(methodBean)); - plantUmlContextBean.addClassBean(classBean); - } -*/ - /** - * 注册bo类对象 - * @param plantUmlContextBean - */ - /*public void registPageBO(PlantUmlContextBean plantUmlContextBean){ - ClassBean classBean = new ClassBean(); - classBean.setClassDesc("分页bo对象"); - classBean.setClassName("PageBO"); - classBean.setDerived(false); - classBean.setPackageName("com.coderman.utils.commonbo"); - - plantUmlContextBean.addClassBean(classBean); - }*/ - - - -} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/Main.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/Main.java similarity index 48% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/Main.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/Main.java index 93351bc..ed34a53 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/Main.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/Main.java @@ -1,9 +1,13 @@ -package com.coderman.codemaker; +package com.tianhua.codemaker; +import com.coderman.codemaker.dberparse.ERPlantUMLParseService; +import com.coderman.codemaker.dberparse.ERPlantUMLParseServiceImpl; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; /** * description: Main
@@ -12,14 +16,21 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties * version: 1.0
*/ @SpringBootApplication -@MapperScan(value = "com.coderman.codemaker.dao") +@MapperScan(value = "com.tianhua.codemaker.dao") @EnableConfigurationProperties +@ComponentScan({"com.tianhua.*"}) public class Main { - public static void main(String[] args) { - - + /** + * 将plantuml e-r图解析服务注入到springbean中 + * @return + */ + @Bean + public ERPlantUMLParseService getErplantUMLParseService(){ + return new ERPlantUMLParseServiceImpl(); + } + public static void main(String[] args) { SpringApplication.run(Main.class, args); } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/AppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/AppService.java new file mode 100644 index 0000000..2ef0e37 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/AppService.java @@ -0,0 +1,19 @@ +package com.tianhua.codemaker.app; + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface AppService { + /** + * 根据模块名获取 模块文件写服务 + * @param moduleName + * @return + */ + IWriteFileService getModelAppService(String moduleName); + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/CommonWriteService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/CommonWriteService.java new file mode 100644 index 0000000..e8861a8 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/CommonWriteService.java @@ -0,0 +1,155 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.utils.Constant; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; + +/** + * Description: + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +@Slf4j +public class CommonWriteService { + + @Autowired + private AppServiceConfig appServiceConfig; + /** + * 写pom文件 + * @param classContentBean + */ + public void writePom(ClassContentBean classContentBean){ + String modulePath = classContentBean.getModulePath(); + String filePath = modulePath + "/" + "pom.xml"; + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + + /** + * 写路由 + * @param classContentBean + */ + public void writeRoute(ClassContentBean classContentBean){ + //走默认的包生成方式 + if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ + writeClassFile(classContentBean); + }else { + //走文档里的package包生成方式 + writeClassFileV2(classContentBean); + } + } + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFile(ClassContentBean classContentBean) { + String filePath = getFilePath(classContentBean); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + + /** + * + * @param classContentBean + * @return + */ + private String getFilePath(ClassContentBean classContentBean) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/") ; + packagePath = Constant.JAVA + "/" + packagePath + "/" + classContentBean.getChildPackageName(); + String fileName = classContentBean.getHumpClassName() + ".java"; + return classContentBean.getModulePath() + packagePath + "/" + fileName; + } + + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFileV2(ClassContentBean classContentBean) { + String filePath = getClassPackageFilePath(classContentBean); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + log.error("error",e); + } + } + + /** + * + * @param classContentBean + * @return + */ + private String getClassPackageFilePath(ClassContentBean classContentBean) { + String packagePath = classContentBean.getClassPackageName().replace(".", "/") ; + packagePath = Constant.JAVA + "/" + packagePath; + String fileName = classContentBean.getHumpClassName() + ".java"; + return classContentBean.getModulePath() + packagePath + "/" + fileName; + } + + + /** + * 写Mapper.xml文件 + * @param classContentBean + */ + public void writeMapperXml(ClassContentBean classContentBean) { + String filePath = classContentBean.getModulePath() + Constant.MAPPER + "/" + classContentBean.getHumpClassName() + classContentBean.getClassSuffix(); + + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassTestFile(ClassContentBean classContentBean) { + + String filePath = getTestFilePath( classContentBean.getHumpClassName(), classContentBean.getClassSuffix(), classContentBean.getModulePath()); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写测试文件 + * @param humpClassName + * @param classSuffix + * @return + */ + public String getTestFilePath(String humpClassName, String classSuffix, String modulePath) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + packagePath = Constant.TEST_JAVA + "/" + packagePath + ".test"; + String fileName = humpClassName+"Test" + classSuffix; + return modulePath + packagePath + "/" + fileName; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/FunctionCodeAppWriteService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/FunctionCodeAppWriteService.java new file mode 100644 index 0000000..e2ba09f --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/FunctionCodeAppWriteService.java @@ -0,0 +1,82 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.enums.ModuleEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; + +/** + * Description: + * date: 2022/1/26 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class FunctionCodeAppWriteService { + + @Autowired + private CommonWriteService writeService; + + /** + * 第一级key:模块标示 + * 第二级key:代码元素标示 + * 第二级value:代码生成的lamda函数 + */ + private static Map>> templateCodeWriteMap = new HashMap<>(); + + /** + * 初始化业务分派逻辑,代替了if-else部分 + * key: 代码元素类型 + * value: lambda表达式,写代码文件执行的方法 + */ + public void dispatcherInit(String appType){ + for (ModuleEnum moduleEnum : ModuleEnum.values()){ + if(moduleEnum.getAppName().equals(appType)){ + String simleModule = moduleEnum.getModuleName().replace(appType+"-",""); + Map> consumerMap = templateCodeWriteMap.get(simleModule); + if(consumerMap == null){ + consumerMap = new HashMap<>(); + } + Map> finalConsumerMap = consumerMap; + moduleEnum.getTemplateFileSet().forEach(templateCode-> { + if(templateCode.contains(TemplateFileEnum.POM.getTempFileName())){ + finalConsumerMap.put(templateCode, classContentBean -> writeService.writePom(classContentBean)); + } else if(templateCode.contains(TemplateFileEnum.MAPPER_XML.getTempFileName())){ + finalConsumerMap.put(templateCode, classContentBean -> writeService.writeMapperXml(classContentBean)); + }else if(templateCode.contains(TemplateFileEnum.TEST.getTempFileName())){ + finalConsumerMap.put(templateCode, classContentBean -> writeService.writeClassTestFile(classContentBean)); + } else { + finalConsumerMap.put(templateCode, classContentBean -> writeService.writeRoute(classContentBean)); + } + }); + templateCodeWriteMap.put(simleModule,consumerMap); + } + } + } + + /** + * 函数式代码元素文件写入方式 + * @param templateCode + * @param moduleCode + * @param classContentBean + */ + public void write(String templateCode, String moduleCode, ClassContentBean classContentBean){ + //外部appwriteservice根据模块标示moduleCode 代码元素标示templateCode、路由并执行写入函数 + Consumer result = templateCodeWriteMap.get(moduleCode).get(templateCode); + if(result != null){ + //classContentBean 执行这段表达式进行代码文件写入 + result.accept(classContentBean); + return; + } + System.out.println("找不到对应的代码元素处理函数--->moduleCode = "+moduleCode+",templateCode = "+templateCode); + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/IWriteFileService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/IWriteFileService.java new file mode 100644 index 0000000..02420d9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/IWriteFileService.java @@ -0,0 +1,21 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.WriteContentBean; + +/** + * Description: + * date: 2021/6/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public interface IWriteFileService { + + /** + * 抽象写模块class文件 + * @param writeContentBean + */ + void writeContent(WriteContentBean writeContentBean); + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringBootAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringBootAppService.java new file mode 100644 index 0000000..37b7802 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringBootAppService.java @@ -0,0 +1,38 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.enums.ModuleEnum; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "springBootAppService") +public class SpringBootAppService implements AppService{ + @Resource(name = "springBootWriteService") + private IWriteFileService springBootWriteService; + + + + @Resource(name = "springBootApiDocWriteService") + private IWriteFileService springBootApiDocWriteService; + + + @Override + public IWriteFileService getModelAppService(String moduleName) { + if (ModuleEnum.SPRING_BOOT_WEB.getModuleName().endsWith(moduleName)) { + return springBootWriteService; + } + else if (ModuleEnum.SPRINGBOOT_API_DOC.getModuleName().endsWith(moduleName) || moduleName.equals(GlobalConstant.PARENT)) { + return springBootApiDocWriteService; + } + return null; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringCloudAppService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringCloudAppService.java new file mode 100644 index 0000000..65515ff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/SpringCloudAppService.java @@ -0,0 +1,48 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.enums.ModuleEnum; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "springCloudAppService") +public class SpringCloudAppService implements AppService{ + @Resource(name = "sCFeignApiWriteService") + private IWriteFileService sCFeignApiWriteService; + + + + @Resource(name = "sCFeignProviderWriteService") + private IWriteFileService sCFeignProviderWriteService; + + + @Resource(name = "sCFeignApiDocWriteService") + private IWriteFileService sCFeignApiDocWriteService; + + + @Override + public IWriteFileService getModelAppService(String moduleName) { + if (ModuleEnum.SC_FEIGN_API.getModuleName().endsWith(moduleName)) { + return sCFeignApiWriteService; + } + else if (ModuleEnum.SPRINGBOOT_API_DOC.getModuleName().endsWith(moduleName) || moduleName.equals(GlobalConstant.PARENT)) { + return sCFeignApiDocWriteService; + } + else if (ModuleEnum.SC_FEIGN_PROVIDER.getModuleName().endsWith(moduleName) ) { + return sCFeignProviderWriteService; + } + return null; + } + + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/WriteService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/WriteService.java new file mode 100644 index 0000000..017d9b6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/WriteService.java @@ -0,0 +1,161 @@ +package com.tianhua.codemaker.app; + +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.utils.Constant; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; + +/** + * Description: + * date: 2021/7/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "abstractWriteService") +@Slf4j +public abstract class WriteService { + @Autowired + private AppServiceConfig appServiceConfig; + + + + + + + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFile(ClassContentBean classContentBean) { + String filePath = getFilePath(classContentBean); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * + * @param classContentBean + * @return + */ + private String getFilePath(ClassContentBean classContentBean) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/") ; + packagePath = Constant.JAVA + "/" + packagePath + "/" + classContentBean.getChildPackageName(); + String fileName = classContentBean.getHumpClassName() + ".java"; + return classContentBean.getModulePath() + packagePath + "/" + fileName; + } + + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFileV2(ClassContentBean classContentBean) { + String filePath = getClassPackageFilePath(classContentBean); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + log.error("error",e); + } + } + + + /** + * + * @param classContentBean + * @return + */ + private String getClassPackageFilePath(ClassContentBean classContentBean) { + String packagePath = classContentBean.getClassPackageName().replace(".", "/") ; + packagePath = Constant.JAVA + "/" + packagePath; + String fileName = classContentBean.getHumpClassName() + ".java"; + return classContentBean.getModulePath() + packagePath + "/" + fileName; + } + + + /** + * 写路由 + * @param classContentBean + */ + protected void writeRoute(ClassContentBean classContentBean){ + //走默认的包生成方式 + if(StringUtils.isEmpty(classContentBean.getClassPackageName())){ + writeClassFile(classContentBean); + }else { + //走文档里的package包生成方式 + writeClassFileV2(classContentBean); + } + } + + /** + * 写 api doc 文件 + * + * @param content + * @param moduleName + */ + public void writeApiDoc(String content, String moduleName) { + String apiDocOutPath = appServiceConfig.getApiDocOutPath(); + String filePath = apiDocOutPath + "/" + moduleName+".md"; + try { + FileUtils.write(new File(filePath), content, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写pom文件 + * @param classContentBean + */ + public void writePom(ClassContentBean classContentBean){ + String modulePath = classContentBean.getModulePath(); + String filePath = modulePath + "/" + "pom.xml"; + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写sql文件 + * @param classContentBean + */ + public void writeSql(ClassContentBean classContentBean){ + String modulePath = classContentBean.getModulePath(); + String filePath = modulePath + "/sql-doc/" + appServiceConfig.getDbName() + ".sql"; + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写项目配置文件 + * @param classContentBean + */ + public void writeConfig(ClassContentBean classContentBean){ + String modulePath = classContentBean.getModulePath(); + String filePath = modulePath + "/src/main/resources/" + classContentBean.getHumpClassName(); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassBeanFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassBeanFactory.java new file mode 100644 index 0000000..bc6d819 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassBeanFactory.java @@ -0,0 +1,68 @@ +package com.tianhua.codemaker.app.dynamicddd; + +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import org.assertj.core.util.Lists; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Description: + * date: 2021/11/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class ClassBeanFactory { + + /** + * 构建dtobean + * @param className + * @param classBean + * @param fieldBeanList + * @return + */ + public ClassBean buildDtoClassBean(String className, ClassBean classBean, List fieldBeanList){ + String dtoClassName = className; + if (!className.toLowerCase().endsWith("dto")) { + dtoClassName = className + "DTO"; + } + return classBean.derivedNewClassBean(dtoClassName,"api.dto",fieldBeanList); + } + + + /** + * + * @param className + * @param classBean + * @param fieldBeanList + * @return + */ + public ClassBean buildVOClassBean(String className, ClassBean classBean, List fieldBeanList){ + String dtoClassName = className; + if (!className.toLowerCase().endsWith("vo")) { + dtoClassName = className + "VO"; + } + return classBean.derivedNewClassBean(dtoClassName,"adapter.vo",fieldBeanList); + } + + public InterfaceBean buildInterfaceBean(ClassBean classBean){ + InterfaceBean interfaceBean = new InterfaceBean(); + int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainDerivedElementEnum.DTO.getElement()); + if (x >= 0) { + String className = classBean.getClassName().substring(0, x) + "Facade"; + interfaceBean.setClassName(className); + interfaceBean.setPlantUMLPackage("api.facade"); + interfaceBean.setClassDesc(classBean.getClassDesc()); + interfaceBean.setMethodBeanList(Lists.newArrayList()); + return interfaceBean; + } + return null; + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassConvertFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassConvertFactory.java new file mode 100644 index 0000000..6789152 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ClassConvertFactory.java @@ -0,0 +1,899 @@ +package com.tianhua.codemaker.app.dynamicddd; + +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.VisibilityEnum; +import com.tianhua.codemaker.utils.StringHelperUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.assertj.core.util.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + * Description:类转换构建工厂 + * date: 2021/10/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class ClassConvertFactory { + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private ClassBeanFactory classBeanFactory; + + @Autowired + private MethodBeanFactory methodBeanFactory; + + /** + * 处理派生类bo->dto + * + * @param domainBOClassList + * @return + */ + public List getDTOClassList(List domainBOClassList) { + List dtoClassList = new ArrayList<>(); + for (ClassBean classBean : domainBOClassList) { + List fieldBeanList = classBean.buildSimpleFieldList(); + String[] classNameArr = classBean.getExtendFieldBean().getDtoKeyList(); + for (String className : classNameArr) { + dtoClassList.add(classBeanFactory.buildDtoClassBean(className, classBean, fieldBeanList)); + } + } + return dtoClassList; + } + + /** + * 处理派生类bo->dto + * + * @param domainBOClassList + * @return + */ + public List getVOClassList(List domainBOClassList) { + List voClassList = new ArrayList<>(); + + for (ClassBean classBean : domainBOClassList) { + List fieldBeanList = classBean.buildSimpleFieldList(); + String[] classNameArr = classBean.getExtendFieldBean().getVoKeyList(); + if (classNameArr == null || classNameArr.length == 0) { + continue; + } + for (String className : classNameArr) { + voClassList.add(classBeanFactory.buildVOClassBean(className, classBean, fieldBeanList)); + } + } + + return voClassList; + } + + + /** + * 处理派生类dto->facade + * + * @param dtoClassList + * @return + */ + public List getFacadeInterfaceList(List dtoClassList) { + List facadeInterfaceList = new ArrayList<>(); + + for (ClassBean classBean : dtoClassList) { + InterfaceBean interfaceBean = classBeanFactory.buildInterfaceBean(classBean); + if (interfaceBean == null) { + continue; + } + facadeInterfaceList.add(interfaceBean); + + } + return facadeInterfaceList; + } + + /** + * 处理派生类dto-bo convert + * + * @param dtoClassList + * @return + */ + public List getDTOBOConvertInterfaceList(List dtoClassList) { + List facadeInterfaceList = new ArrayList<>(); + for (ClassBean classBean : dtoClassList) { + InterfaceBean interfaceBean = new InterfaceBean(); + int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainDerivedElementEnum.DTO.getElement()); + if (x >= 0) { + String className = classBean.getClassName().substring(0, x) + "Convert"; + interfaceBean.setClassName(className); + interfaceBean.setPlantUMLPackage("model.convert"); + interfaceBean.setClassDesc(classBean.getClassDesc()); + interfaceBean.setMethodBeanList(getDTOBOConvertMethodList(classBean)); + List importList = new ArrayList<>(); + importList.add(classBean.getPackageName() + "." + classBean.getClassName()); + interfaceBean.setImportClassList(importList); + facadeInterfaceList.add(interfaceBean); + } + } + return facadeInterfaceList; + } + + + /** + * 处理派生类dto-bo convert + * + * @param boElementBeanList + * @return + */ + public Map getDOBOConvertInterfaceList(List boElementBeanList) { + + Map convertMap = new HashMap<>(); + Map boConvertRelationMap = new HashMap<>(); + + List doboConvertInterfaceList = new ArrayList<>(); + for (ClassBean classBean : boElementBeanList) { + InterfaceBean interfaceBean = new InterfaceBean(); + int x = classBean.getClassName().toLowerCase().lastIndexOf(DomainElementEnum.BO.getElement()); + if (x >= 0) { + String className = classBean.getClassName().substring(0, x) + "Converter"; + interfaceBean.setClassName(className); + interfaceBean.setPlantUMLPackage("data.convert"); + interfaceBean.setClassDesc(classBean.getClassDesc()); + interfaceBean.setMethodBeanList(getDOBOConvertMethodList(classBean)); + interfaceBean.setImportClassList(Lists.newArrayList()); + doboConvertInterfaceList.add(interfaceBean); + boConvertRelationMap.put(classBean.getClassName(), className); + } + } + convertMap.put("doboConvertList", doboConvertInterfaceList); + convertMap.put("doboConvertRelationMap", boConvertRelationMap); + return convertMap; + } + + /** + * 处理派生类dto-bo convert + * + * @param classBean + * @return + */ + public List getDOBOConvertMethodList(ClassBean classBean) { + Optional fieldBean = classBean.getFieldBeanList().stream().filter(v -> v.isTableKey()).findFirst(); + if (!fieldBean.isPresent()) { + return Lists.newArrayList(); + } + + String tableName = fieldBean.get().getFieldName().replace("String", "").replace("string", "").trim(); + if (StringUtils.isEmpty(tableName)) { + return Lists.newArrayList(); + } + String classDOName = StringHelperUtils.getClassDOName(tableName) + "DO"; + + + List methodBeanList = new ArrayList<>(); + MethodBean do2bo = new MethodBean(); + String boClassName = classBean.getClassName(); + String varClassName = classDOName.substring(0, 1).toLowerCase().concat(classDOName.substring(1)); + do2bo.setMethodName("do2bo(" + classDOName + " " + varClassName + ")"); + do2bo.setReturnClass(boClassName); + methodBeanList.add(do2bo); + + MethodBean dtoList2boList = new MethodBean(); + dtoList2boList.setMethodName("doList2boList(List<" + classDOName + "> " + varClassName + "List)"); + dtoList2boList.setReturnClass("List<" + boClassName + ">"); + methodBeanList.add(dtoList2boList); + + + MethodBean bo2to = new MethodBean(); + varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + bo2to.setMethodName("bo2do(" + boClassName + " " + varClassName + ")"); + bo2to.setReturnClass(classDOName); + methodBeanList.add(bo2to); + + MethodBean boList2dtoList = new MethodBean(); + boList2dtoList.setMethodName("boList2doList(List<" + boClassName + "> " + varClassName + "List)"); + boList2dtoList.setReturnClass("List<" + classDOName + ">"); + methodBeanList.add(boList2dtoList); + + methodBeanList.forEach(methodBean -> methodBean.buildParamArr()); + return methodBeanList; + } + + + /** + * 处理派生类dto-bo convert + * + * @param classBean + * @return + */ + public List getDTOBOConvertMethodList(ClassBean classBean) { + List methodBeanList = new ArrayList<>(); + MethodBean dto2bo = new MethodBean(); + String boClassName = classBean.getClassName().replace("DTO", "BO"); + String varClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + dto2bo.setMethodName("dto2bo(" + classBean.getClassName() + " " + varClassName + ")"); + dto2bo.setReturnClass(boClassName); + methodBeanList.add(dto2bo); + + MethodBean dtoList2boList = new MethodBean(); + dtoList2boList.setMethodName("dtoList2boList(List<" + classBean.getClassName() + "> " + varClassName + "List)"); + dtoList2boList.setReturnClass("List<" + boClassName + ">"); + methodBeanList.add(dtoList2boList); + + + MethodBean bo2to = new MethodBean(); + varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + bo2to.setMethodName("bo2dto(" + boClassName + " " + varClassName + ")"); + bo2to.setReturnClass(classBean.getClassName().replace("DTO", "BO")); + methodBeanList.add(bo2to); + + MethodBean boList2dtoList = new MethodBean(); + boList2dtoList.setMethodName("boList2dtoList(List<" + boClassName + "> " + varClassName + "List)"); + boList2dtoList.setReturnClass("List<" + classBean.getClassName() + ">"); + methodBeanList.add(boList2dtoList); + + return methodBeanList; + } + + + /** + * 处理派生类facade->facadeimpl + * + * @param facadeInterfaceList + * @return + */ + public List getFacadeImplList(List facadeInterfaceList) { + List facadeImplList = new ArrayList<>(); + + for (InterfaceBean interfaceBean : facadeInterfaceList) { + ClassBean classBean = new ClassBean(); + String className = interfaceBean.getClassName() + "Impl"; + classBean.setClassName(className); + classBean.setClassDesc(classBean.getClassDesc()); + classBean.setPlantUMLPackage("app.facadeimpl"); + List methodBeanList = new ArrayList<>(); + interfaceBean.getMethodBeanList().forEach(methodBean -> methodBeanList.add(methodBean.copySelf(""))); + List fieldBeanList = new ArrayList<>(interfaceBean.getFieldBeanList()); + classBean.setContext(interfaceBean.getContext()); + classBean.setMethodBeanList(methodBeanList); + classBean.setFieldBeanList(fieldBeanList); + classBean.setImportClassList(interfaceBean.getImportClassList()); + classBean.getImportClassList().addAll(interfaceBean.getChildClassImportPackageList()); + interfaceBean.getDynamicImportPackageList().forEach(str -> classBean.addImportClass(str)); + + classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); + facadeImplList.add(classBean); + } + return facadeImplList; + } + + /** + * 处理派生类bo->facade + * + * @param domainBOClassList + * @return + */ + public List getFacadeClassList(List domainBOClassList) { + Map> facadeBOmap = new HashMap<>(); + domainBOClassList.forEach(classBean -> { + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isFacadeKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String facadeClassName = fieldBeanOptional.get().getFieldName().replace("String", "") + .replace("string", "").trim(); + List classBeanList = facadeBOmap.get(facadeClassName); + if (CollectionUtils.isEmpty(classBeanList)) { + classBeanList = Lists.newArrayList(); + } + classBeanList.add(classBean); + facadeBOmap.put(facadeClassName, classBeanList); + } + }); + + List interfaceBeanList = new ArrayList<>(); + facadeBOmap.forEach((k, v) -> { + InterfaceBean facadeInterfaceBean = new InterfaceBean(); + if (k.toLowerCase().endsWith("facade")) { + facadeInterfaceBean.setClassName(k); + } else { + facadeInterfaceBean.setClassName(k + "Facade"); + } + facadeInterfaceBean.setPlantUMLPackage("api.facade"); + + List facadeMethodList = new ArrayList<>(); + + v.stream().forEach(classBean -> { + List classMethodList = classBean.getMethodBeanList(); + if (CollectionUtils.isNotEmpty(classMethodList)) { + //通过特定字符过滤facade方法 + List newMethodList = classMethodList.stream().filter(methodBean -> + (methodBean.getReturnClass().toLowerCase().contains("dto") + || methodBean.getReturnClass().toLowerCase().contains("result") + || methodBean.getMethodName().toLowerCase().contains("facade") + || methodBean.getMethodName().toLowerCase().contains("dto")) + && !methodBean.isExportAclKey() + ).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(newMethodList)) { + facadeMethodList.addAll(newMethodList); + } + } + classBean.getDynamicImportPackageList().stream().forEach(str-> facadeInterfaceBean.addDynamicImportClass(str)); + facadeInterfaceBean.setContext(classBean.getContext()); + }); + facadeMethodList.forEach(methodBean -> methodBean.buildParamArr()); + facadeInterfaceBean.setMethodBeanList(facadeMethodList); + facadeInterfaceBean.setFieldBeanList(new ArrayList<>()); + interfaceBeanList.add(facadeInterfaceBean); + }); + + return interfaceBeanList; + + } + + /** + * 处理派生类controller->feign + * + * @param controllerClassList + * @return + */ + public List getFeignClassList(List controllerClassList) { + List interfaceBeanList = new ArrayList<>(); + controllerClassList.forEach(classBean -> { + InterfaceBean feignInterfaceBean = new InterfaceBean(); + feignInterfaceBean.setContext(classBean.getContext()); + feignInterfaceBean.setClassName(classBean.getClassName().replace("Controller","") + "Feign"); + feignInterfaceBean.setPlantUMLPackage("api.feign"); + List feignMethodList = new ArrayList<>(); + + classBean.getMethodBeanList().stream().forEach(methodBean -> { + feignMethodList.add(methodBean.copySelf("")); + }); + feignMethodList.forEach(methodBean -> methodBean.buildParamArr()); + feignInterfaceBean.setMethodBeanList(feignMethodList); + feignInterfaceBean.setFieldBeanList(new ArrayList<>()); + interfaceBeanList.add(feignInterfaceBean); + }); + return interfaceBeanList; + } + + + /** + * 处理派生类bo->controller + * + * @param domainBOClassList + * @return + */ + public List getControllerClassList(List domainBOClassList) { + Map> controllermap = new HashMap<>(); + domainBOClassList.forEach(classBean -> { + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isControllerKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String controllerClassName = fieldBeanOptional.get().getFieldName().replace("String", "") + .replace("string", "").trim(); + List classBeanList = controllermap.get(controllerClassName); + if (CollectionUtils.isEmpty(classBeanList)) { + classBeanList = Lists.newArrayList(); + } + classBeanList.add(classBean); + controllermap.put(controllerClassName, classBeanList); + } + }); + + List controllerBeanList = new ArrayList<>(); + controllermap.forEach((k, v) -> { + ClassBean controllerBean = new ClassBean(); + if (k.toLowerCase().endsWith("controller")) { + controllerBean.setClassName(k); + } else { + controllerBean.setClassName(k + "Controller"); + } + controllerBean.setPlantUMLPackage("adapter.controller"); + List controllerMethodList = new ArrayList<>(); + + v.stream().forEach(classBean -> { + controllerBean.setContext(classBean.getContext()); + List classMethodList = classBean.getMethodBeanList(); + if (CollectionUtils.isNotEmpty(classMethodList)) { + //通过特定字符过滤facade方法 + List newMethodList = classMethodList.stream().filter(methodBean -> methodBean.getDesc().contains("/") + ).collect(Collectors.toList()); + + + if (CollectionUtils.isNotEmpty(newMethodList)) { + newMethodList.forEach(methodBean -> { + String pathValue = methodBean.getDesc().substring(methodBean.getDesc().indexOf("/")); + methodBean.setPathValue(pathValue); + methodBean.setDesc(methodBean.getDesc().replace(methodBean.getPathValue(), "")); + }); + + controllerMethodList.addAll(newMethodList); + } + } + classBean.getDynamicImportPackageList().stream().forEach(str -> controllerBean.addImportClass(str)); + }); + controllerMethodList.forEach(methodBean -> methodBean.buildParamArr()); + controllerBean.setMethodBeanList(controllerMethodList); + + controllerBeanList.add(controllerBean); + }); + + return controllerBeanList; + + } + + + /** + * 对bo类进行解析 + * + * @param domainBOList + * @return + */ + public Map getConvertInterfaceBeanList(List domainBOList) { + + Map> facadeBOmap = new HashMap<>(); + + Map convertMap = new HashMap<>(); + + domainBOList.forEach(classBean -> { + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isFacadeKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String facadeClassName = fieldBeanOptional.get().getFieldName().replace("String", "") + .replace("string", "").trim(); + if (facadeClassName.contains(",")) { + facadeClassName = classBean.getClassName().replace("BO", "").replace("Bo", "").replace("bo", "").trim(); + } + List classBeanList = facadeBOmap.get(facadeClassName); + if (CollectionUtils.isEmpty(classBeanList)) { + classBeanList = Lists.newArrayList(); + } + classBeanList.add(classBean); + facadeBOmap.put(facadeClassName, classBeanList); + } + }); + + List interfaceConvertBeanList = new ArrayList<>(); + + Map facadeConvertRelationMap = new HashMap<>(); + + facadeBOmap.forEach((k, v) -> { + InterfaceBean convertInterfaceBean = new InterfaceBean(); + String convertClassName = k.replace("Facade", "").replace("facade", "") + "Convert"; + convertInterfaceBean.setClassName(convertClassName); + convertInterfaceBean.setPlantUMLPackage("model.convert"); + convertInterfaceBean.setClassDesc(convertClassName); + facadeConvertRelationMap.put(k, convertClassName); + Set importClassSet = new HashSet<>(); + List classMethodList = new ArrayList<>(); + + v.stream().forEach(classBean -> { + + List methodBeanList = new ArrayList<>(); + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(f -> f.isDtoKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String dtoClassNameStr = fieldBeanOptional.get().getFieldName() + .replace("String", "") + .replace("string", "") + .trim(); + + + String[] arr = dtoClassNameStr.split(","); + for (String dtoClassName : arr) { + importClassSet.add(appServiceConfig.getPackage() + ".api.dto." + dtoClassName); + MethodBean dto2bo = new MethodBean(); + String vardtoName = dtoClassName.substring(0, 1).toLowerCase().concat(dtoClassName.substring(1)); + dto2bo.setMethodName("dto2bo(" + dtoClassName + " " + vardtoName + ")"); + dto2bo.setReturnClass(classBean.getClassName()); + methodBeanList.add(dto2bo); + + MethodBean dtoList2boList = new MethodBean(); + dtoList2boList.setMethodName(vardtoName + "s2boList(List<" + dtoClassName + "> " + vardtoName + "List)"); + dtoList2boList.setReturnClass("List<" + classBean.getClassName() + ">"); + methodBeanList.add(dtoList2boList); + + MethodBean bo2to = new MethodBean(); + String varBOClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + bo2to.setMethodName("bo2dto(" + classBean.getClassName() + " " + varBOClassName + ")"); + bo2to.setReturnClass(dtoClassName); + methodBeanList.add(bo2to); + + MethodBean boList2dtoList = new MethodBean(); + boList2dtoList.setMethodName(varBOClassName + "s2dtoList(List<" + classBean.getClassName() + "> " + varBOClassName + "List)"); + boList2dtoList.setReturnClass("List<" + dtoClassName + ">"); + methodBeanList.add(boList2dtoList); + } + classMethodList.addAll(methodBeanList); + } + }); + + convertInterfaceBean.setImportClassList(Lists.newArrayList(importClassSet)); + + Map map = new HashMap<>(); + classMethodList + .stream().filter(methodBean -> + !methodBean.getMethodName().toLowerCase().contains("response") && + !methodBean.getMethodName().toLowerCase().contains("responsedto") && + !methodBean.getReturnClass().toLowerCase().contains("request") && + !methodBean.getReturnClass().toLowerCase().contains("requestdto") || + methodBean.getReturnClass().toLowerCase().contains("requestbo") + ).collect(Collectors.toList()).forEach(methodBean -> map.putIfAbsent(methodBean.getReturnClass() + methodBean.getMethodName(), methodBean)); + convertInterfaceBean.setMethodBeanList(map.values().stream().collect(Collectors.toList())); + convertInterfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildParamArr()); + interfaceConvertBeanList.add(convertInterfaceBean); + }); + + + convertMap.put("interfaceList", interfaceConvertBeanList); + convertMap.put("facadeconvertrelation", facadeConvertRelationMap); + + return convertMap; + + } + + + /** + * 对bo类进行解析 + * + * @param domainBOList + * @return + */ + public Map getConvertBOVOInterfaceBeanList(List domainBOList) { + Map convertMap = new HashMap<>(); + Map boConvertRelationMap = new HashMap<>(); + + Map> contrllerBOmap = new HashMap<>(); + domainBOList.forEach(classBean -> { + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.isControllerKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String controllerClassName = fieldBeanOptional.get().getFieldName().replace("String", "") + .replace("string", "").trim(); + if (controllerClassName.contains(",")) { + controllerClassName = classBean.getClassName().replace("BO", "").replace("Bo", "").replace("bo", "").trim(); + } + List classBeanList = contrllerBOmap.get(controllerClassName); + if (CollectionUtils.isEmpty(classBeanList)) { + classBeanList = Lists.newArrayList(); + } + classBeanList.add(classBean); + contrllerBOmap.put(controllerClassName, classBeanList); + } + }); + + List interfaceConvertBeanList = new ArrayList<>(); + contrllerBOmap.forEach((k, v) -> { + InterfaceBean convertInterfaceBean = new InterfaceBean(); + String convertClassName = k.replace("Controller", "").replace("controller", "") + "Convertervobo"; + convertInterfaceBean.setClassName(convertClassName); + convertInterfaceBean.setPlantUMLPackage("model.convert"); + convertInterfaceBean.setClassDesc(convertClassName); + Set importClassSet = new HashSet<>(); + List classMethodList = new ArrayList<>(); + + AtomicInteger i = new AtomicInteger(); + v.stream().forEach(classBean -> { + + List methodBeanList = new ArrayList<>(); + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(f -> f.isVoKey()).findFirst(); + if (fieldBeanOptional.isPresent()) { + String voClassNameStr = fieldBeanOptional.get().getFieldName() + .replace("String", "") + .replace("string", "") + .trim(); + + String[] arr = voClassNameStr.split(","); + + for (String voClassName : arr) { + String varBOClassName = classBean.getClassName().substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + + importClassSet.add(appServiceConfig.getPackage() + ".adapter.vo." + voClassName); + MethodBean dto2bo = new MethodBean(); + String varVoName = voClassName.substring(0, 1).toLowerCase().concat(voClassName.substring(1)); + dto2bo.setMethodName("vo2bo(" + voClassName + " " + varVoName + ")"); + dto2bo.setReturnClass(classBean.getClassName()); + methodBeanList.add(dto2bo); + + MethodBean dtoList2boList = new MethodBean(); + String tmpVar = varVoName.replace(varBOClassName.replace("BO", "").replace("Bo", ""), ""); + varVoName = tmpVar.substring(0, 1).toLowerCase().concat(tmpVar.substring(1)); + if (StringUtils.isEmpty(varVoName)) { + varVoName = "vo"; + } + String volist2bolist = methodBeanFactory.getvolist2boListMethod(i.get()); + dtoList2boList.setMethodName(volist2bolist + "(List<" + voClassName + "> " + varVoName + "List)"); + dtoList2boList.setReturnClass("List<" + classBean.getClassName() + ">"); + methodBeanList.add(dtoList2boList); + + MethodBean bo2to = new MethodBean(); + tmpVar = voClassName.replace(classBean.getClassName().replace("BO", "").replace("Bo", ""), ""); + + bo2to.setMethodName("bo2" + tmpVar + "(" + classBean.getClassName() + " " + varBOClassName + ")"); + bo2to.setReturnClass(voClassName); + methodBeanList.add(bo2to); + + MethodBean boList2dtoList = new MethodBean(); + String bolist2volist = methodBeanFactory.getbolist2voListMethod(i.get()); + + boList2dtoList.setMethodName(bolist2volist + "(List<" + classBean.getClassName() + "> " + varBOClassName + "List)"); + boList2dtoList.setReturnClass("List<" + voClassName + ">"); + methodBeanList.add(boList2dtoList); + i.getAndIncrement(); + } + classMethodList.addAll(methodBeanList); + } + boConvertRelationMap.put(classBean.getClassName(), convertInterfaceBean.getClassName()); + }); + + convertInterfaceBean.setImportClassList(Lists.newArrayList(importClassSet)); + + Map map = new HashMap<>(); + classMethodList + .stream().filter(methodBean -> + !methodBean.getMethodName().toLowerCase().contains("response") && + !methodBean.getMethodName().toLowerCase().contains("responsevo") && + !methodBean.getReturnClass().toLowerCase().contains("request") && + !methodBean.getReturnClass().toLowerCase().contains("requestvo") || + methodBean.getReturnClass().toLowerCase().contains("requestbo") + ).collect(Collectors.toList()).forEach(methodBean -> map.putIfAbsent(methodBean.getReturnClass() + methodBean.getMethodName(), methodBean)); + convertInterfaceBean.setMethodBeanList(map.values().stream().collect(Collectors.toList())); + convertInterfaceBean.getMethodBeanList().forEach(methodBean -> methodBean.buildParamArr()); + interfaceConvertBeanList.add(convertInterfaceBean); + }); + convertMap.put("voboconvertlist", interfaceConvertBeanList); + convertMap.put("voboconvertrelation", boConvertRelationMap); + return convertMap; + } + + /** + * 构建方法内容 + * + * @param methodBeanList + * @return + */ + private List getMethodBeanList(List methodBeanList) { + for (MethodBean methodBean : methodBeanList) { + methodBean.buildMethodContent(); + } + return methodBeanList; + } + + /** + * 处理派生类service->serviceimpl + * + * @param serviceInterfaceList + * @return + */ + public List geServiceImplList(List serviceInterfaceList) { + List serviceImplList = new ArrayList<>(); + + for (InterfaceBean interfaceBean : serviceInterfaceList) { + ClassBean classBean = new ClassBean(); + String className = interfaceBean.getClassName() + "Impl"; + classBean.setClassName(className); + classBean.setClassDesc(classBean.getClassDesc()); + classBean.setPlantUMLPackage("infrast.serviceImpl"); + classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); + if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { + classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); + classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); + } else { + classBean.setMethodBeanList(Lists.newArrayList()); + } + classBean.setImportClassList(interfaceBean.getImportClassList()); + classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); + serviceImplList.add(classBean); + } + return serviceImplList; + } + + /** + * 处理派生类gataway->gatawayimpl + * + * @param gatawayInterfaceList + * @return + */ + public List getGatawayImplList(List gatawayInterfaceList) { + List gatawayImplList = new ArrayList<>(); + + for (InterfaceBean interfaceBean : gatawayInterfaceList) { + ClassBean classBean = new ClassBean(); + String className = interfaceBean.getClassName() + "Impl"; + classBean.setClassName(className); + classBean.setClassDesc(classBean.getClassDesc()); + classBean.setPlantUMLPackage("infrast.gatawayimpl"); + classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); + if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { + classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); + classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); + } else { + classBean.setMethodBeanList(Lists.newArrayList()); + } + classBean.setImportClassList(interfaceBean.getImportClassList()); + classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); + gatawayImplList.add(classBean); + } + return gatawayImplList; + } + + /** + * 处理派生类infrastacl->infrastaclimpl + * + * @param InfrastAclInterfaceList + * @return + */ + public List getInfrastAclImplList(List InfrastAclInterfaceList) { + List infrastAclImplList = new ArrayList<>(); + + for (InterfaceBean interfaceBean : InfrastAclInterfaceList) { + ClassBean classBean = new ClassBean(); + String className = interfaceBean.getClassName() + "Impl"; + classBean.setClassName(className); + classBean.setClassDesc(classBean.getClassDesc()); + classBean.setPlantUMLPackage("infrast.acl.impl"); + classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); + if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { + classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); + classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); + } else { + classBean.setMethodBeanList(Lists.newArrayList()); + } + classBean.setImportClassList(interfaceBean.getImportClassList()); + classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); + infrastAclImplList.add(classBean); + } + return infrastAclImplList; + } + + /** + * 处理派生类repository->repositoryimpl + * + * @param repositoryInterfaceList + * @return + */ + public List getRepositoryImplList(List repositoryInterfaceList) { + List repositoryImplList = new ArrayList<>(); + + for (InterfaceBean interfaceBean : repositoryInterfaceList) { + ClassBean classBean = new ClassBean(); + String className = interfaceBean.getClassName() + "Impl"; + classBean.setClassName(className); + classBean.setClassDesc(classBean.getClassDesc()); + classBean.setPlantUMLPackage("infrast.repositoryimpl"); + if (CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())) { + classBean.setMethodBeanList(getMethodBeanList(interfaceBean.getMethodBeanList())); + classBean.setFieldBeanList(interfaceBean.getFieldBeanList()); + } else { + classBean.setMethodBeanList(Lists.newArrayList()); + } + classBean.setPackageName(appServiceConfig.getPackage() + "." + classBean.getPlantUMLPackage()); + classBean.setImportClassList(interfaceBean.getImportClassList()); + classBean.setRelationClassStr(" implements " + interfaceBean.getClassName()); + repositoryImplList.add(classBean); + } + return repositoryImplList; + } + + /** + * 构建api的枚举数据 + * + * @param enumBeanList + * @return + */ + public List getApiEnumBeanList(List enumBeanList) { + List apiEnumBeanList = new ArrayList<>(); + enumBeanList.forEach(enumBean -> apiEnumBeanList.add(enumBean.copySelf())); + apiEnumBeanList.forEach(enumBean -> enumBean.setPackageName(appServiceConfig.getPackage() + ".api.enums")); + return apiEnumBeanList; + } + + + /** + * 处理派生类bo->dto + * + * @param domainBOClassList + * @return + */ + public List getQueryDTOClassList(List domainBOClassList) { + List dtoClassList = new ArrayList<>(); + for (ClassBean classBean : domainBOClassList) { + Optional optionalFieldBeanQueryDTOKey = classBean.getFieldBeanList().stream().filter(f -> f.isQueryDtoKey()).findFirst(); + if (!optionalFieldBeanQueryDTOKey.isPresent()) { + continue; + } + ClassBean queryDtoBean = optionalFieldBeanQueryDTOKey.get().buildQueryClass(); + queryDtoBean.setAuthor(classBean.getAuthor()); + queryDtoBean.setContext(classBean.getContext()); + queryDtoBean.setClassDesc("查询" + classBean.getClassDesc() + "请求DTO"); + dtoClassList.add(queryDtoBean); + } + return dtoClassList; + } + + + /** + * 处理派生类bo->dto + * + * @param domainBOClassList + * @return + */ + public List getQueryVOClassList(List domainBOClassList) { + List dtoClassList = new ArrayList<>(); + for (ClassBean classBean : domainBOClassList) { + Optional optionalFieldBeanQueryVOKey = classBean.getFieldBeanList().stream().filter(f -> f.isQueryVoKey()).findFirst(); + if (!optionalFieldBeanQueryVOKey.isPresent()) { + continue; + } + ClassBean queryDtoBean = optionalFieldBeanQueryVOKey.get().buildQueryClass(); + queryDtoBean.setAuthor(classBean.getAuthor()); + queryDtoBean.setClassDesc("查询" + classBean.getClassDesc() + "请求VO"); + queryDtoBean.setContext(classBean.getContext()); + dtoClassList.add(queryDtoBean); + } + return dtoClassList; + } + + + /** + * 处理派生类bo->导出到acl适配防腐下游参数 + * + * @param domainBOClassList + * @return + */ + public List getExportAclDTOClassList(List domainBOClassList) { + Map classBeanMap = new HashMap<>(); + + for (ClassBean classBean : domainBOClassList) { + Optional optionalMethodBeanQueryDTOKey = classBean.getMethodBeanList().stream().filter(f -> f.isExportAclKey()).findFirst(); + if (!optionalMethodBeanQueryDTOKey.isPresent()) { + continue; + } + //String DepartmentQueryDTO(roleList->list) + if(!optionalMethodBeanQueryDTOKey.get().getMethodName().contains("(")){ + continue; + } + + String [] classArr = optionalMethodBeanQueryDTOKey.get().getMethodName().trim().split("\\("); + + //对className打标防止被dto,vo handler扫描到当成bo->dto/vo的派生类处理, + //打标的类会被aclHandler专门扫描处理 + String className = classArr[0]+TemplateFileEnum.ACL.getTempFileName(); + ClassBean aclDtoclassBean = classBeanMap.get(className); + if(aclDtoclassBean == null){ + aclDtoclassBean = new ClassBean(); + aclDtoclassBean.setClassName(className); + aclDtoclassBean.setFieldBeanList(new ArrayList<>()); + } + + String fieldMappingStr = classArr[1].replace(")",""); + String [] fieldMappingArr = fieldMappingStr.split(","); + for(String fieldMapping : fieldMappingArr){ + String [] fieldArr; + if(fieldMapping.contains("->")){ + fieldArr = fieldMapping.split("->"); + }else { + fieldArr = fieldMapping.split("-"); + } + Optional fieldBeanOptional = classBean.getFieldBeanList().stream().filter(fieldBean -> fieldBean.getSimpleName().equals(fieldArr[0])).findFirst(); + if(fieldBeanOptional.isPresent()){ + FieldBean boFieldBean = fieldBeanOptional.get(); + String fieldType = boFieldBean.getFieldType(); + FieldBean fieldBean = new FieldBean(); + fieldBean.setFieldName(fieldType + " " + fieldArr[1]); + fieldBean.setDesc(boFieldBean.getDesc()); + fieldBean.setVisibility(VisibilityEnum.PRIVATE.getVisibility()); + fieldBean.buildFieldDetail(); + aclDtoclassBean.addField(fieldBean); + } + + } + classBeanMap.put(className,aclDtoclassBean); + } + + return Lists.newArrayList(classBeanMap.values()); + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/MethodBeanFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/MethodBeanFactory.java new file mode 100644 index 0000000..7da5377 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/MethodBeanFactory.java @@ -0,0 +1,78 @@ +package com.tianhua.codemaker.app.dynamicddd; + +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import org.assertj.core.util.Lists; +import org.springframework.stereotype.Service; + +import java.security.SecureRandom; +import java.util.List; + + +/** + * Description:动态方法工厂 + * date: 2021/11/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class MethodBeanFactory { + private List do2boList = Lists.newArrayList("do2bo", "DO2DO", "do2Bo", "Do2Bo"); + private List vos2bosList = Lists.newArrayList("VOs2BOs", "voList2boList", "volist2boList", "voList2BoList","vos2bos","volist2bolist","vos2BOs"); + + private List bos2vosList = Lists.newArrayList("BOs2VOs", "boList2voList", "bolist2voList", "boList2VoList","bos2vos","boList2VOList","bos2VOs"); + + + + private SecureRandom random = new SecureRandom(); + public MethodBean buildDO2BO(ClassBean classBean,String classDOName){ + MethodBean do2bo = new MethodBean(); + String boClassName = classBean.getClassName(); + String varClassName = classDOName.substring(0, 1).toLowerCase().concat(classDOName.substring(1)); + String randomMethodName = do2boList.get(Math.abs(random.nextInt(do2boList.size()))); + + do2bo.setMethodName(randomMethodName + "(" + classDOName + " " + varClassName + ")"); + do2bo.setReturnClass(boClassName); + return do2bo; + } + + public MethodBean buildBO2DO(ClassBean classBean,String boClassName,String classDOName){ + MethodBean bo2do = new MethodBean(); + String varClassName = boClassName.substring(0, 1).toLowerCase().concat(classBean.getClassName().substring(1)); + bo2do.setMethodName("bo2do(" + boClassName + " " + varClassName + ")"); + bo2do.setReturnClass(classDOName); + return bo2do; + } + + + public MethodBean buildDOList2BOList(String classDOName,String varClassName,String boClassName){ + MethodBean doList2boList = new MethodBean(); + doList2boList.setMethodName("doList2boList(List<" + classDOName + "> " + varClassName + "List)"); + doList2boList.setReturnClass("List<" + boClassName + ">"); + return doList2boList; + } + + public MethodBean buildBOList2DOList(String classDOName,String varClassName,String boClassName){ + MethodBean boList2doList = new MethodBean(); + boList2doList.setMethodName("boList2doList(List<" + boClassName + "> " + varClassName + "List)"); + boList2doList.setReturnClass("List<" + classDOName + ">"); + return boList2doList; + } + + + public String getvolist2boListMethod(int index){ + if(index >= vos2bosList.size()){ + return vos2bosList.get(vos2bosList.size()-1)+"V"+(index - vos2bosList.size()); + } + return vos2bosList.get(index); + } + + public String getbolist2voListMethod(int index){ + if(index >= bos2vosList.size()){ + return bos2vosList.get(bos2vosList.size()-1)+"V"+(index - bos2vosList.size()); + } + return bos2vosList.get(index); + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ValidateFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ValidateFactory.java new file mode 100644 index 0000000..5e6f40d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/ValidateFactory.java @@ -0,0 +1,46 @@ +package com.tianhua.codemaker.app.dynamicddd; + +/** + * Description:参数校验模式实现工厂 + * date: 2022/1/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class ValidateFactory { + /** + * + * + * + * 1.在dto,vo中构建参数验证逻辑,-->代码片段模式 + * 2.独立构建一个validator包 + * 3.走aop+属性注解(相当于自定义实现) + * 4.走工具类+反射的方式 + * 5.spring validator注解 + */ + + /** + * 4.走工具类+反射的方式 + * @return + */ + public String buildByToolsAndReflection(){ + return null; + } + + /** + * 2.独立构建一个validator包 + * @return + */ + public String buildByValidator(){ + return null; + } + + /** + * 1.在dto,vo中构建参数验证逻辑 + * @return + */ + public String buildByInnerParam(){ + return null; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java new file mode 100644 index 0000000..77f6735 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppCmdElementHandler.java @@ -0,0 +1,62 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.CommandElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "appCmdElementHandler") +public class AppCmdElementHandler implements DomainElementHandler { + + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public CommandElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + CommandElementBean commandElementBean = new CommandElementBean(); + List cmdElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(classFilter(v.getClassName())){ + importPackageService.setPackageName(v,"app.command"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + cmdElementBeanList.add(v); + } + }); + cmdElementBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); + commandElementBean.setClassBeanList(cmdElementBeanList); + return commandElementBean; + } + + /** + * 类过滤 + * @param className + * @return + */ + private boolean classFilter(String className){ + String[] cmdArr = DomainElementEnum.COMMAND.getElement().split(","); + for (String cmd : cmdArr){ + if (className.toLowerCase().endsWith(cmd)) { + return true; + } + } + return false; + } +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppExeElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppExeElementHandler.java new file mode 100644 index 0000000..edaef64 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppExeElementHandler.java @@ -0,0 +1,151 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.ExecutorElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "appExeElementHandler") +public class AppExeElementHandler implements DomainElementHandler { + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public ExecutorElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + ExecutorElementBean executorElementBean = new ExecutorElementBean(); + List interfaceBeanList = new ArrayList<>(); + List classBeanList = new ArrayList<>(); + + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(classFilter(v.getClassName())){ + importPackageService.setPackageName(v,"app.executor"); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + interfaceBeanList.add(v); + } + }); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(classFilter(v.getClassName())){ + importPackageService.setPackageName(v,"app.executor"); + addExeMethod(v,plantUmlContextBean); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + List methodBeanList = new ArrayList<>(); + v.getMethodBeanList().forEach(methodBean -> { + methodBean.buildDoc(); + methodBeanList.add(methodBean.copySelf(null)); + }); + v.setMethodBeanList(methodBeanList); + classBeanList.add(v); + } + }); + executorElementBean.setClassBeanList(classBeanList); + executorElementBean.setInterfaceBeanList(interfaceBeanList); + return executorElementBean; + } + + /** + * 类过滤 + * @param className + * @return + */ + private boolean classFilter(String className){ + String[] cmdArr = DomainElementEnum.EXECUTOR.getElement().split(","); + for (String cmd : cmdArr){ + if (className.toLowerCase().endsWith(cmd)) { + return true; + } + } + return false; + } + + /** + * 如果exe实现了抽象的exe接口,则对exe实现类进行检测 + * @param classBean + * @param plantUmlContextBean + */ + private void addExeMethod(ClassBean classBean, PlantUmlContextBean plantUmlContextBean){ + //如果没有实现类则直接返回 + if(StringUtils.isEmpty(classBean.getRelationClassStr())){ + return; + } + + if(classBean.getRelationClassStr().contains("implements")){ + String implClass = classBean.getRelationClassStr().replace("implements","").trim(); + InterfaceBean interfaceBean = plantUmlContextBean.getInterfaceBeanMap().get(implClass); + if(interfaceBean == null || CollectionUtils.isEmpty(interfaceBean.getMethodBeanList())){ + return; + } + + if(CollectionUtils.isEmpty(classBean.getMethodBeanList())){ + classBean.setMethodBeanList(interfaceBean.getMethodBeanList()); + return; + } + + dealMethod(classBean,interfaceBean.getMethodBeanList()); + + }else if(classBean.getRelationClassStr().contains("extends")){ + String extendsClass = classBean.getRelationClassStr().replace("extends","").trim(); + ClassBean superClassBean = plantUmlContextBean.getClassBeanMap().get(extendsClass); + if(superClassBean == null || CollectionUtils.isEmpty(superClassBean.getMethodBeanList())){ + return; + } + + if(CollectionUtils.isEmpty(classBean.getMethodBeanList())){ + classBean.setMethodBeanList(superClassBean.getMethodBeanList()); + return; + } + + dealMethod(classBean,superClassBean.getMethodBeanList()); + } + } + + /** + * 处理继承和实现的方法 + * @param classBean + * @param superMethodList + */ + private void dealMethod(ClassBean classBean, List superMethodList){ + List implMethodList = new ArrayList<>(); + for (MethodBean interfaceMethod : superMethodList){ + boolean implMethod = false; + for (MethodBean classMethod : classBean.getMethodBeanList()){ + if(classMethod.getMethodName().toLowerCase().trim().equals(interfaceMethod.getMethodName().toLowerCase().trim()) + && classMethod.getReturnClass().equals(interfaceMethod.getReturnClass())){ + implMethod = true; + } + } + if(!implMethod){ + implMethodList.add(interfaceMethod); + } + } + List methodBeanList = classBean.getMethodBeanList(); + methodBeanList.addAll(implMethodList); + classBean.setMethodBeanList(methodBeanList); + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java new file mode 100644 index 0000000..9222434 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/AppListenerElementHandler.java @@ -0,0 +1,47 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.AppListenerElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "appListenerElementHandler") +public class AppListenerElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public AppListenerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + AppListenerElementBean appListenerElementBean = new AppListenerElementBean(); + List appListenerElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.APP_LISTENER.getElement())){ + importPackageService.setPackageName(v,"app.listener"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + appListenerElementBeanList.add(v); + } + }); + appListenerElementBean.setClassBeanList(appListenerElementBeanList); + return appListenerElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/CacheElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/CacheElementHandler.java new file mode 100644 index 0000000..a9dc9e7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/CacheElementHandler.java @@ -0,0 +1,57 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.CacheElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "cacheElementHandler") +public class CacheElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public CacheElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + CacheElementBean cacheElementBean = new CacheElementBean(); + List cacheBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.CACHE.getElement())){ + String moduleTag = "infrast"; + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".cache"; + }else if(v.getPlantUMLPackage().contains(moduleTag)){ + moduleTag = ""; + } + importPackageService.setPackageNameWithModule(v,moduleTag); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + + cacheBeanList.add(v); + } + }); + cacheElementBean.setClassBeanList(cacheBeanList); + return cacheElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java new file mode 100644 index 0000000..c36473e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainBoElementHandler.java @@ -0,0 +1,227 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.annotations.ElementTag; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.DomainBoElementBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.assertj.core.util.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "domainBoElementHandler") +@ElementTag(elementName = "bo") +public class DomainBoElementHandler implements DomainElementHandler { + + @Autowired + private DerivedClassFactory derivedClassFactory; + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public DomainBoElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + DomainBoElementBean domainBoElementBean = new DomainBoElementBean(); + List domainBoElementBeanList = new ArrayList<>(); + + List boWithTableKeyList = new ArrayList<>(); + List boWithDtoKeyList = new ArrayList<>(); + List boWithFacadeKeyList = new ArrayList<>(); + List boWithVoKeyList = new ArrayList<>(); + List boWithControllerKeyList = new ArrayList<>(); + List boWithQueryDTOKeyList = new ArrayList<>(); + List boWithQueryVOKeyList = new ArrayList<>(); + List boWithExportACLKeyList = new ArrayList<>(); + List boWithValidateKeyList = new ArrayList<>(); + + + //过滤带有数据库表映射的bo + plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { + //过滤掉pagebo + if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !v.getClassName().equals("PageBO")) { + + Optional optionalFieldBeanContextKey = v.getFieldBeanList().stream().filter(f -> f.isContextKey()).findFirst(); + if (optionalFieldBeanContextKey.isPresent()) { + v.setContext(optionalFieldBeanContextKey.get().getSimpleName()); + } + + Optional optionalFieldBeanQueryDTOKey = v.getFieldBeanList().stream().filter(f -> f.isQueryDtoKey()).findFirst(); + if (optionalFieldBeanQueryDTOKey.isPresent()) { + boWithQueryDTOKeyList.add(v); + } + + Optional optionalFieldBeanQueryVOKey = v.getFieldBeanList().stream().filter(f -> f.isQueryVoKey()).findFirst(); + if (optionalFieldBeanQueryVOKey.isPresent()) { + boWithQueryVOKeyList.add(v); + } + + + importPackageService.setPackageName(v, "domain.bo"); + + Optional optionalFieldBeanTableKey = v.getFieldBeanList().stream().filter(f -> f.isTableKey()).findFirst(); + if (optionalFieldBeanTableKey.isPresent()) { + boWithTableKeyList.add(v); + //处理bo关联表的ID + FieldBean idFieldBean = new FieldBean("Long id","主键ID","id"); + List fieldBeanList = Lists.newArrayList(idFieldBean); + fieldBeanList.addAll(v.getFieldBeanList()); + v.setFieldBeanList(fieldBeanList); + setTableBean(v,plantUmlContextBean,optionalFieldBeanTableKey.get().getFieldName()); + v.getExtendFieldBean().buildTableKey(optionalFieldBeanTableKey.get().getFieldName()); + } + + Optional optionalFieldBeanDtoKey = v.getFieldBeanList().stream().filter(f -> f.isDtoKey()).findFirst(); + if (optionalFieldBeanDtoKey.isPresent()) { + boWithDtoKeyList.add(v); + v.getExtendFieldBean().buildDtoKeyArr(optionalFieldBeanDtoKey.get().getFieldName()); + } + + Optional optionalFieldBeanFacadeKey = v.getFieldBeanList().stream().filter(f -> f.isFacadeKey()).findFirst(); + if (optionalFieldBeanFacadeKey.isPresent()) { + boWithFacadeKeyList.add(v); + v.getExtendFieldBean().buildFacadeKeyArr(optionalFieldBeanFacadeKey.get().getFieldName()); + } + + Optional optionalFieldBeanVOKey = v.getFieldBeanList().stream().filter(f -> f.isVoKey()).findFirst(); + if (optionalFieldBeanVOKey.isPresent()) { + boWithVoKeyList.add(v); + v.getExtendFieldBean().buildVoKeyArr(optionalFieldBeanVOKey.get().getFieldName()); + } + + Optional optionalFieldBeanControllerKey = v.getFieldBeanList().stream().filter(f -> f.isControllerKey()).findFirst(); + if (optionalFieldBeanControllerKey.isPresent()) { + boWithControllerKeyList.add(v); + v.getExtendFieldBean().buildControllerKeyArr(optionalFieldBeanControllerKey.get().getFieldName()); + } + + Optional optionalFieldBeanInvokeFileKey= v.getFieldBeanList().stream().filter(f -> f.isInvokeFileKey()).findFirst(); + if (optionalFieldBeanInvokeFileKey.isPresent()) { + v.getExtendFieldBean().buildInvokeFileKeyArr(optionalFieldBeanInvokeFileKey.get().getFieldName()); + String invokeFileName = optionalFieldBeanInvokeFileKey.get().getFieldName().replace("String","").replace("string","").trim(); + plantUmlContextBean.addDynamicInvokeFile(invokeFileName); + } + + Optional optionalExportAclKey = v.getMethodBeanList().stream().filter(methodBean -> methodBean.isExportAclKey()).findFirst(); + if (optionalExportAclKey.isPresent()) { + boWithExportACLKeyList.add(v); + } + + Optional optionalFieldBeanValidateKey = v.getFieldBeanList().stream().filter(f -> f.isValidateKey()).findFirst(); + if (optionalFieldBeanValidateKey.isPresent()) { + boWithValidateKeyList.add(v); + v.getExtendFieldBean().buildValidteKeyArr(optionalFieldBeanValidateKey.get().getFieldName()); + } + } + }); + //bo 派生 do-bo convert + derivedClassFactory.deriveDOBOConvert(boWithTableKeyList, plantUmlContextBean); + //默认的派生策略 + if(CollectionUtils.isEmpty(boWithDtoKeyList)){ + //bo 派生 dto + derivedClassFactory.deriveBo2DTO(domainBoElementBeanList, plantUmlContextBean); + }else { + //基于plantuml.bo的扩展信息进行派生 + derivedClassFactory.deriveBo2DTO(boWithDtoKeyList, plantUmlContextBean); + } + + //构建查询dto + if(CollectionUtils.isNotEmpty(boWithQueryDTOKeyList)){ + derivedClassFactory.deriveBo2Query(boWithQueryDTOKeyList, plantUmlContextBean, TemplateFileEnum.DTO.getTempFileName()); + } + + //构建查询vo + if(CollectionUtils.isNotEmpty(boWithQueryVOKeyList)){ + derivedClassFactory.deriveBo2Query(boWithQueryVOKeyList, plantUmlContextBean, TemplateFileEnum.VO.getTempFileName()); + } + + + //处理bo-vo的派生 + if(CollectionUtils.isNotEmpty(boWithVoKeyList)){ + //基于plantuml.bo的扩展信息进行派生 + derivedClassFactory.deriveBo2VO(boWithVoKeyList, plantUmlContextBean); + //通过vo 派生convert, + derivedClassFactory.deriveBoVO2Convert(boWithVoKeyList,plantUmlContextBean); + } + + //处理facade + if(CollectionUtils.isNotEmpty(boWithFacadeKeyList)){ + derivedClassFactory.deriveBo2Facade(boWithFacadeKeyList,plantUmlContextBean); + //通过facade 处理convert, + derivedClassFactory.deriveBoDTO2Convert(boWithFacadeKeyList,plantUmlContextBean); + } + + //处理controller + if(CollectionUtils.isNotEmpty(boWithControllerKeyList)){ + derivedClassFactory.deriveBo2Controller(boWithControllerKeyList,plantUmlContextBean); + } + + //构建需要导出的下游依赖接口参数 + if(CollectionUtils.isNotEmpty(boWithExportACLKeyList)){ + derivedClassFactory.deriveBo2AclDTO(boWithExportACLKeyList, plantUmlContextBean); + } + + + plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { + if (v.getClassName().toLowerCase().endsWith(DomainElementEnum.BO.getElement()) && !v.getClassName().equals("PageBO")) { + //过滤扩展属性 + List beanList = v.getFieldBeanList().stream().filter(f -> f.isSimpleField()).collect(Collectors.toList()); + v.setFieldBeanList(beanList); + + //过滤扩展方法 + List methodBeanList = v.getMethodBeanList().stream().filter(methodBean -> + !methodBean.isModelExtendMethod() + ).collect(Collectors.toList()); + //对bo本身的方法返回值做refresh操作 + methodBeanList.stream().forEach(methodBean -> methodBean.refreshReturnBodyByReturnType()); + v.setMethodBeanList(methodBeanList); + + String className = v.getClassName().substring(0, 1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + domainBoElementBeanList.add(v); + + } + }); + + + domainBoElementBeanList.stream().forEach(v -> importPackageService.dealImportClass(v, plantUmlContextBean)); + domainBoElementBean.setClassBeanList(domainBoElementBeanList); + + return domainBoElementBean; + } + + + /** + * 根据table名称标示找到table对应的DO进而找到TableBean + * @param boClassBean + * @param plantUmlContextBean + * @param tableFieldName + */ + private void setTableBean(ClassBean boClassBean,PlantUmlContextBean plantUmlContextBean,String tableFieldName){ + String tableName = tableFieldName.toLowerCase().trim().replace("string","").replace(" ",""); + for (Map.Entry entry : plantUmlContextBean.getClassBeanMap().entrySet()){ + TableBean tableBean = entry.getValue().getTableBean(); + if(tableBean != null && tableBean.getTableName().equals(tableName)){ + boClassBean.setTableBean(tableBean); + } + } + + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java new file mode 100644 index 0000000..7035829 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainFactoryElementHandler.java @@ -0,0 +1,48 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.FactoryElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "domainFactoryElementHandler") +public class DomainFactoryElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public FactoryElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + FactoryElementBean factoryElementBean = new FactoryElementBean(); + List domainBoElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.FACTORY.getElement())){ + importPackageService.setPackageName(v,"domain.factory"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + domainBoElementBeanList.add(v); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + } + }); + factoryElementBean.setClassBeanList(domainBoElementBeanList); + return factoryElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java new file mode 100644 index 0000000..2bea0a3 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainGatawayElementHandler.java @@ -0,0 +1,49 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.GatawayElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "domainGatawayElementHandler") +public class DomainGatawayElementHandler implements DomainElementHandler { + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public GatawayElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + GatawayElementBean gatawayElementBean = new GatawayElementBean(); + List gatawInterfaceBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.GATAWAY.getElement())){ + importPackageService.setPackageName(v,"domain.gataway"); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + gatawInterfaceBeanList.add(v); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + + } + }); + gatawayElementBean.setInterfaceBeanList(gatawInterfaceBeanList); + return gatawayElementBean; + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainServiceElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainServiceElementHandler.java new file mode 100644 index 0000000..24fab3a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/DomainServiceElementHandler.java @@ -0,0 +1,50 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.GatawayElementBean; +import com.tianhua.codemaker.bean.dddelement.ServiceElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "domainServiceElementHandler") +public class DomainServiceElementHandler implements DomainElementHandler { + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public ServiceElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + ServiceElementBean serviceElementBean = new ServiceElementBean(); + List gatawInterfaceBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.SERVICE.getElement())){ + importPackageService.setPackageName(v,"domain.service"); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + gatawInterfaceBeanList.add(v); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + } + }); + + serviceElementBean.setInterfaceBeanList(gatawInterfaceBeanList); + return serviceElementBean; + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/EventElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/EventElementHandler.java new file mode 100644 index 0000000..202f1df --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/EventElementHandler.java @@ -0,0 +1,47 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.DomainEventElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/30 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "eventElementHandler") +public class EventElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + + @Override + public DomainEventElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + DomainEventElementBean domainEventElementBean = new DomainEventElementBean(); + List domainmsgBodyBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.EVENT.getElement())){ + importPackageService.setPackageName(v,"domain.event"); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + domainmsgBodyBeanList.add(v); + } + }); + domainEventElementBean.setClassBeanList(domainmsgBodyBeanList); + return domainEventElementBean; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java new file mode 100644 index 0000000..bcab273 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/InfrastAclElementHandler.java @@ -0,0 +1,149 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.InfrastAclElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.google.common.collect.Sets; +import org.apache.commons.lang3.StringUtils; +import org.assertj.core.util.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "infrastAclElementHandler") +public class InfrastAclElementHandler implements DomainElementHandler { + + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public InfrastAclElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + InfrastAclElementBean infrastAclElementBean = new InfrastAclElementBean(); + List interfaceBeanList = new ArrayList<>(); + + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.ACL.getElement())){ + importPackageService.setPackageName(v,"domain.acl"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + interfaceBeanList.add(v); + } + else if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.ADAPTER.getElement()) + || v.getClassName().toLowerCase().endsWith(DomainElementEnum.ADAPTER_SERVICE.getElement())){ + importPackageService.setPackageName(v,"domain.adapter"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + interfaceBeanList.add(v); + } + }); + + interfaceBeanList.stream().forEach(v-> importPackageService.dealImportClass(v,plantUmlContextBean)); + + List classBeanList = new ArrayList<>(); + interfaceBeanList.stream().forEach(interfaceBean -> { + List methodBeanList = interfaceBean.getMethodBeanList(); + for (MethodBean methodBean : methodBeanList){ + //对返回值进行检测 + if (methodBean.getReturnClass().toLowerCase().contains("dto")){ + String className = getClassName(methodBean.getReturnClass()); + String packageName = interfaceBean.getPackageName()+"."+"res.dto"; + + registAclClassBean(className,packageName,plantUmlContextBean); + ClassBean newClassBean = new ClassBean(); + newClassBean.setClassName(className); + newClassBean.setAuthor(interfaceBean.getAuthor()); + newClassBean.setPackageName(packageName); + newClassBean.setAuthor(interfaceBean.getAuthor()); + + interfaceBean.getImportClassList().add(packageName+"."+className); + classBeanList.add(newClassBean); + } + if(methodBean.getMethodName().contains("()")){ + continue; + } + String params = methodBean.getMethodName().substring(methodBean.getMethodName().indexOf("(")+1,methodBean.getMethodName().length() - 1); + if(StringUtils.isEmpty(params.trim())){ + continue; + } + String[] arr = params.split(","); + for (String param : arr){ + if(param.toLowerCase().contains("dto")){ + String className = param.trim().split(" ")[0]; + String packageName = interfaceBean.getPackageName()+"."+"req.dto"; + + registAclClassBean(className,packageName,plantUmlContextBean); + ClassBean newClassBean = new ClassBean(); + newClassBean.setClassName(className); + newClassBean.setFieldBeanList(new ArrayList<>()); + newClassBean.setMethodBeanList(new ArrayList<>()); + + newClassBean.setPackageName(packageName); + newClassBean.setAuthor(interfaceBean.getAuthor()); + interfaceBean.getImportClassList().add(packageName+"."+className); + classBeanList.add(newClassBean); + } + } + } + }); + + interfaceBeanList.stream().forEach(interfaceBean -> { + Set importSet = Sets.newHashSet(interfaceBean.getImportClassList()); + interfaceBean.setImportClassList(Lists.newArrayList(importSet)); + }); + + infrastAclElementBean.setInterfaceBeanList(interfaceBeanList); + infrastAclElementBean.setClassBeanList(classBeanList); + return infrastAclElementBean; + } + + + private String getClassName(String returnClassName){ + return returnClassName.trim().replace("<","") + .replace(">","") + .replace("List","") + .replace("Map","") + .replace("Set",""); + } + + /** + * 根据infrast.acl包中的接口方法参数和返回值获取导出的依赖classBean,注册到plantUML上下文中 + * @param className + * @param packageName + * @param plantUmlContextBean + * @return + */ + private void registAclClassBean(String className, String packageName, PlantUmlContextBean plantUmlContextBean){ + String newClassName = className + TemplateFileEnum.ACL.getTempFileName(); + ClassBean classBean = plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().get(newClassName); + if(classBean == null){ + classBean = new ClassBean(); + classBean.setClassName(newClassName); + classBean.setMethodBeanList(new ArrayList<>()); + classBean.setFieldBeanList(new ArrayList<>()); + } + classBean.setPackageName(packageName); + plantUmlContextBean.getDerivedPlantUmlContextBean().getClassBeanMap().put(newClassName,classBean); + + + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java new file mode 100644 index 0000000..4b62336 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqConsumerElementHandler.java @@ -0,0 +1,52 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.MqConsumerElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "mqConsumerElementHandler") +public class MqConsumerElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public MqConsumerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + MqConsumerElementBean mqConsumerElementBean = new MqConsumerElementBean(); + List appListenerElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_CONSUMER.getElement())){ + String moduleTag = "infrast"; + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".mq.consumer"; + } + importPackageService.setPackageNameWithModule(v,moduleTag); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + appListenerElementBeanList.add(v); + } + }); + mqConsumerElementBean.setClassBeanList(appListenerElementBeanList); + return mqConsumerElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java new file mode 100644 index 0000000..bca95fc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqHandlerElementHandler.java @@ -0,0 +1,52 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.MqHandlerElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "mqHandlerElementHandler") +public class MqHandlerElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public MqHandlerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + MqHandlerElementBean mqHandlerElementBean = new MqHandlerElementBean(); + List appListenerElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_HANDLER.getElement())){ + String moduleTag = "infrast"; + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".mq.handler"; + } + importPackageService.setPackageNameWithModule(v,moduleTag); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + appListenerElementBeanList.add(v); + } + }); + mqHandlerElementBean.setClassBeanList(appListenerElementBeanList); + return mqHandlerElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java new file mode 100644 index 0000000..8f40b83 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MqProducerElementHandler.java @@ -0,0 +1,53 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.MqProducerElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "mqProducerElementHandler") +public class MqProducerElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public MqProducerElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + MqProducerElementBean mqProducerElementBean = new MqProducerElementBean(); + List appListenerElementBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MQ_PRODUCER.getElement())){ + String moduleTag = "infrast"; + if(StringUtils.isEmpty(v.getPlantUMLPackage())){ + moduleTag = moduleTag+".mq.producer"; + } + importPackageService.setPackageNameWithModule(v,moduleTag); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + appListenerElementBeanList.add(v); + } + }); + mqProducerElementBean.setClassBeanList(appListenerElementBeanList); + return mqProducerElementBean; + } + +} + diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java new file mode 100644 index 0000000..28e9221 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/MsgBodyElementHandler.java @@ -0,0 +1,47 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.DomainMsgBodyElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/30 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "msgBodyElementHandler") +public class MsgBodyElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + + @Override + public DomainMsgBodyElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + DomainMsgBodyElementBean domainMsgBodyElementBean = new DomainMsgBodyElementBean(); + List domainmsgBodyBeanList = new ArrayList<>(); + plantUmlContextBean.getClassBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.MSGBODY.getElement())){ + importPackageService.setPackageName(v,"domain.msgbody"); + + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + domainmsgBodyBeanList.add(v); + } + }); + domainMsgBodyElementBean.setClassBeanList(domainmsgBodyBeanList); + return domainMsgBodyElementBean; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java new file mode 100644 index 0000000..9346317 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/RepositoryElementHandler.java @@ -0,0 +1,47 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.RepositoryElementBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "repositoryElementHandler") +public class RepositoryElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + + @Override + public RepositoryElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + RepositoryElementBean repositoryElementBean = new RepositoryElementBean(); + List repositoryInterfaceBeanList = new ArrayList<>(); + plantUmlContextBean.getInterfaceBeanMap().forEach((k,v)->{ + if(v.getClassName().toLowerCase().endsWith(DomainElementEnum.REPOSITORY.getElement())){ + importPackageService.setPackageName(v,"domain.repository"); + String className = v.getClassName().substring(0,1).toUpperCase().concat(v.getClassName().substring(1)); + v.setClassName(className); + importPackageService.dealImportClass(v,plantUmlContextBean); + repositoryInterfaceBeanList.add(v); + v.getMethodBeanList().forEach(methodBean -> methodBean.buildDoc()); + } + }); + repositoryElementBean.setInterfaceBeanList(repositoryInterfaceBeanList); + return repositoryElementBean; + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java new file mode 100644 index 0000000..d13e2f1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/dynamicddd/handler/ValueObjectElementHandler.java @@ -0,0 +1,137 @@ +package com.tianhua.codemaker.app.dynamicddd.handler; + +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.app.dynamicddd.DerivedClassFactory; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.bean.dddelement.ValueObjectElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.EnumBean; +import com.tianhua.codemaker.bean.plantuml.FieldBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.enums.VisibilityEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * Description: + * date: 2021/6/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "valueObjectElementHandler") +public class ValueObjectElementHandler implements DomainElementHandler { + + @Autowired + private ImportPackageServiceImpl importPackageService; + @Autowired + private DerivedClassFactory derivedClassFactory; + + @Override + public ValueObjectElementBean getElementBeanList(PlantUmlContextBean plantUmlContextBean) { + ValueObjectElementBean valueObjectElementBean = new ValueObjectElementBean(); + List domainBoElementBeanList = new ArrayList<>(); + List enumBeanList = new ArrayList<>(); + + plantUmlContextBean.getClassBeanMap().forEach((k, v) -> { + if (classFilter(v.getClassName())) { + importPackageService.setPackageName(v,"domain.valuobject"); + domainBoElementBeanList.add(v); + } + }); + + + List enumWithToRpcClientKeyList = new ArrayList<>(); + + plantUmlContextBean.getEnumBeanMap().forEach((k, v) -> { + List enumValueList = new ArrayList<>(); + v.getEnumValueList().forEach(value -> { + if (value.endsWith(",")) { + enumValueList.add(value.substring(0,value.length() - 1)); + } else if (value.endsWith(";")) { + enumValueList.add(value.replace(";", "")); + } else { + enumValueList.add(value); + } + }); + + v.setEnumValueList(enumValueList); + //包名兼容处理 + if(v.getPlantUMLPackage().toLowerCase().endsWith("enum")){ + v.setPlantUMLPackage(v.getPlantUMLPackage()+"s"); + } + importPackageService.setPackageName(v,"domain.enums"); + + + Optional optionalFieldBean = v.getFieldBeanList().stream().filter(f -> f.isCopyToRpcClientKey()).findFirst(); + if (optionalFieldBean.isPresent()) { + enumWithToRpcClientKeyList.add(v); + } + + List fieldBeanList = v.getFieldBeanList().stream() + .filter(fieldBean -> !fieldBean.isCopyToRpcClientKey()) + .collect(Collectors.toList()); + v.setFieldBeanList(fieldBeanList); + dealConstruct(v); + + enumBeanList.add(v); + }); + + //将领域值对象-枚举类复制到rpc client端 + if(CollectionUtils.isNotEmpty(enumWithToRpcClientKeyList)){ + //基于plantuml.enum的扩展信息进行派生 + derivedClassFactory.deriveEnum2Enum(enumWithToRpcClientKeyList, plantUmlContextBean); + } + valueObjectElementBean.setEnumBeanList(enumBeanList); + valueObjectElementBean.setClassBeanList(domainBoElementBeanList); + return valueObjectElementBean; + } + + /** + * 处理枚举类中的构造方法 + * @param enumBean + */ + private void dealConstruct(EnumBean enumBean){ + List fieldBeanList = enumBean.getFieldBeanList(); + List paramList = new ArrayList<>(); + List constructMethodBodyList = new ArrayList<>(); + for (FieldBean fieldBean : fieldBeanList){ + String fieldName = fieldBean.getFieldName().replace(fieldBean.getVisibility(), ""); + fieldName.replace(VisibilityEnum.PRIVATE.getVisibility(),"") + .replace(VisibilityEnum.PROTECT.getVisibility(),"") + .replace(VisibilityEnum.PUBLIC.getVisibility(),"") + .replace(VisibilityEnum.PACKAGE_PRIVATE.getVisibility(),""); + paramList.add(fieldName); + String[] fieldValueArr = fieldName.trim().split(" "); + String realFieldName = fieldValueArr[fieldValueArr.length - 1]; + constructMethodBodyList.add("this."+realFieldName+" = "+realFieldName); + } + enumBean.setConstructParamStr(StringUtils.join(paramList,",")); + enumBean.setConstructMethodBodyList(constructMethodBodyList); + } + + + /** + * 类过滤 + * @param className + * @return + */ + private boolean classFilter(String className){ + String[] cmdArr = DomainElementEnum.VALUEOBJECT.getElement().split(","); + for (String cmd : cmdArr){ + if (className.toLowerCase().endsWith(cmd)) { + return true; + } + } + return false; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java new file mode 100644 index 0000000..6b9f638 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootApiDocWriteServiceImpl.java @@ -0,0 +1,36 @@ +package com.tianhua.codemaker.app.springboot; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateSpringbootConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "springBootApiDocWriteService") +public class SpringBootApiDocWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateSpringbootConfig projectTemplateSpringbootConfig; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); + //写sql文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SQL.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateSpringbootConfig.getModulePath()); + writeSql(classContentBean); + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootWriteServiceImpl.java new file mode 100644 index 0000000..abfde0c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springboot/SpringBootWriteServiceImpl.java @@ -0,0 +1,49 @@ +package com.tianhua.codemaker.app.springboot; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.*; +import com.tianhua.codemaker.config.ProjectTemplateSpringbootConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.app.IWriteFileService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + + +/** + * Description: + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "springBootWriteService") +public class SpringBootWriteServiceImpl extends WriteService implements IWriteFileService { + + @Autowired + private ProjectTemplateSpringbootConfig projectTemplateConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "springboot"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean("", projectTemplateConfig.getModulePath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(), moduleCode, classContentBean); + //写config文件 + if (writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)) { + writeConfig(classContentBean); + } + + //写自定义工具类 + if (writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)) { + writeRoute(classContentBean); + } + + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java new file mode 100644 index 0000000..38e65d6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiDocWriteServiceImpl.java @@ -0,0 +1,40 @@ +package com.tianhua.codemaker.app.springcloud; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateSpringCloudConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * Description: + * date: 2021/11/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "sCFeignApiDocWriteService") +public class SCFeignApiDocWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateSpringCloudConfig projectTemplateSpringCloudConfig; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + writeApiDoc(writeContentBean.getContent(),writeContentBean.getHumpClassName()); + //写pom文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.PARENT_POM.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateSpringCloudConfig.getModuleParentPath()); + writePom(classContentBean); + } + + //写sql文件 + if(writeContentBean.getTemplateName().equals(TemplateFileEnum.SQL.getTempFileName())){ + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(projectTemplateSpringCloudConfig.getModuleParentPath()); + writeSql(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java new file mode 100644 index 0000000..28a9333 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignApiWriteServiceImpl.java @@ -0,0 +1,43 @@ +package com.tianhua.codemaker.app.springcloud; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.ProjectTemplateSpringCloudConfig; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/** + * Description: + * date: 2021/11/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ + +@Component(value = "sCFeignApiWriteService") +public class SCFeignApiWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateSpringCloudConfig projectTemplateSpringCloudConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "api"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateSpringCloudConfig.getModuleFeginApiPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java new file mode 100644 index 0000000..33ceaad --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/app/springcloud/SCFeignProviderWriteServiceImpl.java @@ -0,0 +1,162 @@ +package com.tianhua.codemaker.app.springcloud; + +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.app.WriteService; +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.ProjectTemplateSpringCloudConfig; +import com.tianhua.codemaker.utils.Constant; +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; + + +/** + * Description: + * date: 2021/11/29 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Component(value = "sCFeignProviderWriteService") +public class SCFeignProviderWriteServiceImpl extends WriteService implements IWriteFileService { + @Autowired + private ProjectTemplateSpringCloudConfig projectTemplateSpringCloudConfig; + + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private FunctionCodeAppWriteService functionCodeAppWriteService; + + private static final String moduleCode = "provider"; + + @Override + public void writeContent(WriteContentBean writeContentBean) { + + ClassContentBean classContentBean = writeContentBean.buildClassContentBean(moduleCode, projectTemplateSpringCloudConfig.getModuleFeginProviderPath()); + functionCodeAppWriteService.write(writeContentBean.getTemplateName(),moduleCode,classContentBean); + + //写config文件 + if(writeContentBean.getTemplateName().equals(GlobalConstant.CONFIG)){ + writeConfig(classContentBean); + } + + //写自定义工具类 + if(writeContentBean.getTemplateName().equals(GlobalConstant.SINGLE_CLASS_COMMON)){ + writeRoute(classContentBean); + } + } + + /** + * 写service文件 + * + * @param content + * @param humpClassName + */ + public void writeService(String content, String humpClassName) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + String filePath = Constant.JAVA + "/" + packagePath + "/service"; + String fileName = humpClassName + "Service.java"; + filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; + try { + FileUtils.write(new File(filePath), content, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写serviceImpl文件 + * + * @param content + * @param humpClassName + */ + public void writeServiceImpl(String content, String humpClassName) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + String filePath = Constant.JAVA + "/" + packagePath + "/service/impl"; + String fileName = humpClassName + "ServiceImpl.java"; + filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; + try { + FileUtils.write(new File(filePath), content, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写测试文件 + * + * @param content + */ + public void writeTest(String content, String humpClassName) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + String filePath = Constant.TEST_JAVA + "/" + packagePath + "/service/test"; + String fileName = humpClassName + "ServiceTest.java"; + filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; + try { + FileUtils.write(new File(filePath), content, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * 写controller文件 + * + * @param content + * @param humpClassName + */ + public void writeController(String content, String humpClassName) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/"); + String filePath = Constant.JAVA + "/" + packagePath + "/controller"; + String fileName = humpClassName + "Controller.java"; + filePath = projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + filePath + "/" + fileName; + try { + FileUtils.write(new File(filePath), content, "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 写class文件 + * @param classContentBean + */ + public void writeClassFile(ClassContentBean classContentBean) { + String filePath = getFilePath(classContentBean.getChildPackageName(), classContentBean.getHumpClassName(), classContentBean.getClassSuffix()); + try { + FileUtils.write(new File(filePath), classContentBean.getClassContent(), "UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * @param childPackageName 最后一级子包名称 + * @param humpClassName 驼峰式类名 + * @param classSuffix 文件后缀 egg:DTO.java + * @return + */ + private String getFilePath(String childPackageName, String humpClassName, String classSuffix) { + String packageName = appServiceConfig.getPackage(); + String packagePath = packageName.replace(".", "/") ; + packagePath = Constant.JAVA + "/" + packagePath + "/" + childPackageName; + String fileName = humpClassName + classSuffix; + return projectTemplateSpringCloudConfig.getModuleFeginProviderPath() + packagePath + "/" + fileName; + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/AppServiceConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/AppServiceConfig.java similarity index 74% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/AppServiceConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/AppServiceConfig.java index 6f58621..ca0aa5f 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/AppServiceConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/AppServiceConfig.java @@ -1,14 +1,18 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; -import com.coderman.codemaker.api.ICompDecorateService; -import com.coderman.codemaker.api.ICompScanService; -import com.coderman.codemaker.app.AppService; -import com.coderman.codemaker.enums.ModuleEnum; -import com.coderman.codemaker.exceptions.ConfigException; -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.utils.SpringContextHolder; +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.api.ICompScanService; +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.app.AppService; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.enums.ModuleEnum; +import com.tianhua.codemaker.exceptions.ConfigException; +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.utils.SpringContextHolder; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -21,12 +25,13 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * Description: * date: 2021/6/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -40,12 +45,18 @@ public class AppServiceConfig { */ @Value("${application.type}") private String applicationType; + @Value(value = "${application.global.package}") private String packageName; @Value(value = "${application.global.author}") private String author; + /** + * 是否链接具体数据库,根据数据库来构建数据模型 + */ + @Value(value = "${application.global.linkdb}") + private Boolean linkDB; @Value(value = "${application.maven.repo.path}") private String mavenRepoPath; @@ -63,6 +74,9 @@ public class AppServiceConfig { @Value(value = "${application.component.decorate.bean}") private String defaultComponentDecorateBean; + @Value(value = "${application.javsscript.enable}") + private boolean enableJavsScript; + @Resource(name = "colaAppService") private AppService colaAppService; @@ -78,7 +92,6 @@ public class AppServiceConfig { @Resource(name = "springCloudAppService") private AppService springCloudAppService; - @Autowired private ProjectTemplateSpringbootConfig projectTemplateSpringbootConfig; @@ -298,7 +311,7 @@ public class AppServiceConfig { */ public String getErPictureOutPath(){ if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { - return projectTemplateSpringbootConfig.getOutPath(); + return projectTemplateSpringbootConfig.getModulePath(); } else if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { return projectTemplateDubboConfig.getModuleCommonPath(); } else if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { @@ -327,6 +340,39 @@ public class AppServiceConfig { return null; } + /** + * 获取不同项目的文档输出路径 + * @return + */ + public String getJavsProjectOutPath(){ + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return projectTemplateSpringbootConfig.getModulePath()+"-javs"; + } else if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + return projectTemplateDubboConfig.getModuleParentPath()+"-javs"; + } else if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + return projectTemplateColaConfig.getModuleParentPath()+"-javs"; + } else if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + return projectTemplateSpringCloudConfig.getModuleParentPath()+"-javs"; + } + return null; + } + + /** + * 获取不同项目的文档输出路径 + * @return + */ + public String getUMLDocOutPath(){ + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return projectTemplateSpringbootConfig.getUMLDocPath(); + } else if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + return projectTemplateDubboConfig.getUMLDocPath(); + } else if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + return projectTemplateColaConfig.getUMLDocPath(); + } else if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + return projectTemplateSpringCloudConfig.getUMLDocPath(); + } + return null; + } /** * 获取配置中的文档生成开关 @@ -345,6 +391,22 @@ public class AppServiceConfig { return false; } + /** + * 获取配置中的文档生成开关 + * @return + */ + public Boolean getPlantUMLSync() { + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return projectTemplateSpringbootConfig.getPlantUMlDocSync(); + } else if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + return projectTemplateDubboConfig.getPlantUMlDocSync(); + } else if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + return projectTemplateColaConfig.getPlantUMlDocSync(); + } else if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + return projectTemplateSpringCloudConfig.getPlantUMlDocSync(); + } + return false; + } @@ -438,15 +500,6 @@ public class AppServiceConfig { - - /** - * 获取定制化的packageAdapter适配器 - * @return - */ - /*public IClazzAdapter getPackageAdapterBean(){ - return SpringContextHolder.getBean(this.packageAdapterBean,IClazzAdapter.class); - }*/ - /** * 获取项目自定义的需要注入的组件列表 * @return @@ -495,6 +548,9 @@ public class AppServiceConfig { String [] kvArr = clazz.trim().split(":"); String className = kvArr[0]; String moduleName = applicationType + "-" + kvArr[1]; + if(applicationType.equals(kvArr[1])){ + moduleName = applicationType; + } List classList = initClassMap.get(moduleName); if (CollectionUtils.isEmpty(classList)){ classList = new ArrayList<>(); @@ -584,4 +640,118 @@ public class AppServiceConfig { public ICompDecorateService getDefaultCompDecorateService(){ return SpringContextHolder.getBean(this.defaultComponentDecorateBean,ICompDecorateService.class); } + + /** + * 获取自定义的代码元素注册内容 + * @return + */ + public List getCustomCodeFtlList(){ + List ftlBeanList = new ArrayList<>(); + if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + ftlBeanList = projectTemplateColaConfig.getFtlBeanList(); + } + + if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + ftlBeanList = projectTemplateDubboConfig.getFtlBeanList(); + } + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + ftlBeanList = projectTemplateSpringbootConfig.getFtlBeanList(); + } + if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + ftlBeanList = projectTemplateSpringCloudConfig.getFtlBeanList(); + } + ftlBeanList.forEach(ftlBean -> ModuleEnum.addCustomTemplateFile(this.applicationType, ftlBean.getModuleName(),ftlBean.getCodeTempFileName())); + return ftlBeanList; + } + + /** + * 获取统一的pom项目配置 + * @return + */ + public Map getPomConfigMap(){ + if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + return projectTemplateColaConfig.getPomBeanV2(); + } + if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + return projectTemplateDubboConfig.getPomBeanV2(); + } + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return projectTemplateSpringbootConfig.getPomBeanV2(); + } + if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + return projectTemplateSpringCloudConfig.getPomBeanV2(); + } + return null; + } + + /** + * 获取项目的配置信息 + * @return + */ + public List getConfigFileBeanList(){ + if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + return projectTemplateColaConfig.getConfigFileBean(); + } + if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + return projectTemplateDubboConfig.getConfigFileBean(); + } + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return projectTemplateSpringbootConfig.getConfigFileBean(); + } + if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + return projectTemplateSpringCloudConfig.getConfigFileBean(); + } + return null; + } + + public Boolean getLinkDB() { + return linkDB; + } + + /** + * 获取参数校验bean列表 + * @return + */ + public List getValidateServiceBeanList(){ + List validateBeanList = new ArrayList<>(); + if (applicationType.equals(ModuleEnum.COLA_ADAPTER.getAppName())) { + validateBeanList = projectTemplateColaConfig.getValidateBeanList(); + } + if (applicationType.equals(ModuleEnum.DUBBO_API.getAppName())) { + validateBeanList = projectTemplateDubboConfig.getValidateBeanList(); + } + if (applicationType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + validateBeanList = projectTemplateSpringbootConfig.getValidateBeanList(); + } + if (applicationType.equals(ModuleEnum.SC_FEIGN_API.getAppName())) { + validateBeanList = projectTemplateSpringCloudConfig.getValidateBeanList(); + } + return validateBeanList.stream().map(beanName -> (IValidateService)SpringContextHolder.getBean(beanName)).collect(Collectors.toList()); + } + + + /** + * 判断是否配置了mybatis-plus组件的装饰bean + * + * @return + */ + public boolean containsMybatisPlus(){ + List compDecorateServiceList = getCustomICompDecorateServiceList(); + for (ICompDecorateService iCompDecorateService : compDecorateServiceList){ + if(iCompDecorateService.getClass().getName().toLowerCase().contains("mybatisplus")){ + return true; + } + } + + return false; + } + + + /** + * 判断是否启用javsscritp脚本引擎并构建脚本文件 + * @return + */ + public boolean enableJavsScript(){ + return this.enableJavsScript; + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigFactory.java new file mode 100644 index 0000000..e1904ed --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigFactory.java @@ -0,0 +1,52 @@ +package com.tianhua.codemaker.config; + +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.config.ProjectBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * Description: + * date: 2022/3/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class ConfigFactory { + + @Autowired + private AppServiceConfig appServiceConfig; + /** + * 构建项目配置信息 + * @param plantUmlContextBean + * @return + */ + public ProjectBean getProjectBean(PlantUmlContextBean plantUmlContextBean){ + + ProjectBean projectBean = new ProjectBean(); + projectBean.setPackageName(appServiceConfig.getPackage()); + projectBean.setApplicationName(appServiceConfig.getApplicationName()); + projectBean.setDataBaseName(appServiceConfig.getDbName()); + Map contextBeanMap = plantUmlContextBean.getCompContextBeanMap(); + Map listMap = new HashMap<>(); + if(contextBeanMap != null && !contextBeanMap.isEmpty()){ + contextBeanMap.forEach((k,v)->{ + ComponentConfigBean componentConfigBean = v.getComponentConfigBean(); + if(componentConfigBean != null && CollectionUtils.isNotEmpty(componentConfigBean.getConfigList())){ + + listMap.put(componentConfigBean.getConfigName(),componentConfigBean); + } + }); + } + projectBean.setConfigFileMap(listMap); + return projectBean; + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigParseService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigParseService.java new file mode 100644 index 0000000..0bf5bee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ConfigParseService.java @@ -0,0 +1,235 @@ +package com.tianhua.codemaker.config; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.GAVBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Description:解析公共配置 + * date: 2022/2/8 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class ConfigParseService { + /** + * 获取项目配置文件配置 + * @return + */ + public List getConfigFileBean(String configFile){ + List list = new ArrayList<>(); + if(StringUtils.isEmpty(configFile)){ + return list; + } + String [] configFileArr = configFile.split(","); + for (String configStr : configFileArr){ + String [] moduleConfigArr = configStr.split(":"); + String moduleName = moduleConfigArr[1]; + String [] configArr = moduleConfigArr[0].split("_"); + ConfigFileBean configFileBean = ConfigFileBean.getInstance(configArr[0],configArr[1], moduleName); + configFileBean.setTemplateName(moduleConfigArr[0]); + list.add(configFileBean); + } + return list; + } + + /** + * 获取统一的pom配置 + * 默认是父级pom.xml的实例 + * @return + */ + public Map getPomBeanV2(String initPom, String applicationName, String appAliasName,String groupId, String artifactId, String version){ + Map pomBeanMap = getPomBeanMap(applicationName, appAliasName, groupId, artifactId, version); + if(StringUtils.isNotEmpty(initPom)){ + String [] arr = initPom.split(","); + for (String pom : arr){ + String [] pomArr = pom.split(":"); + PomBean modulePom = pomBeanMap.get(pomArr[1]); + if(modulePom == null){ + modulePom = new PomBean(); + modulePom.setModuleName(pomArr[1]); + modulePom.setModuleCode(pomArr[1]); + modulePom.setModulePrefix(appAliasName); + modulePom.setGroupId(groupId); + List gavBeanList = new ArrayList<>(); + gavBeanList.add(new GAVBean(pomArr[0])); + modulePom.setDependencyList(gavBeanList); + }else { + modulePom.getDependencyList().add(new GAVBean(pomArr[0])); + } + pomBeanMap.put(pomArr[1], modulePom); + } + } + return pomBeanMap; + } + /** + * 获取pom配置 + * @return + */ + private Map getPomBeanMap(String applicationName, String appAliasName,String groupId, String artifactId, String version){ + Map pomBeanMap = new HashMap<>(); + PomBean parentPom = new PomBean(); + parentPom.setUrl(null); + parentPom.buildGAV(groupId,artifactId,version); + parentPom.setTemplateCode(TemplateFileEnum.PARENT_POM.getTempFileName()); + parentPom.setAppName(applicationName); + parentPom.buildModule(appAliasName, GlobalConstant.PARENT); + parentPom.setDependencyList(new ArrayList<>()); + + + PomBean clientPom = new PomBean(); + clientPom.buildGAV(groupId,artifactId,version); + clientPom.setDependencyList(new ArrayList<>()); + clientPom.setTemplateCode(TemplateFileEnum.CLIENT_POM.getTempFileName()); + clientPom.buildModule(appAliasName, GlobalConstant.CLIENT); + + + PomBean apiPom = new PomBean(); + apiPom.buildGAV(groupId,artifactId,version); + apiPom.setDependencyList(new ArrayList<>()); + apiPom.setTemplateCode(TemplateFileEnum.API_POM.getTempFileName()); + apiPom.buildModule(appAliasName, GlobalConstant.API); + + PomBean corePom = new PomBean(); + corePom.buildGAV(groupId,artifactId,version); + corePom.setDependencyList(new ArrayList<>()); + corePom.setTemplateCode(TemplateFileEnum.CORE_POM.getTempFileName()); + corePom.buildModule(appAliasName, GlobalConstant.CORE); + + PomBean commonPom = new PomBean(); + commonPom.buildGAV(groupId,artifactId,version); + commonPom.setDependencyList(new ArrayList<>()); + commonPom.setTemplateCode(TemplateFileEnum.COMMON_POM.getTempFileName()); + commonPom.buildModule(appAliasName, GlobalConstant.COMMON); + + + PomBean appPom = new PomBean(); + appPom.buildGAV(groupId,artifactId,version); + appPom.setDependencyList(new ArrayList<>()); + appPom.setTemplateCode(TemplateFileEnum.APP_POM.getTempFileName()); + appPom.buildModule(appAliasName, GlobalConstant.APP); + + PomBean domainPom = new PomBean(); + domainPom.buildGAV(groupId,artifactId,version); + domainPom.setDependencyList(new ArrayList<>()); + domainPom.setTemplateCode(TemplateFileEnum.DOMAIN_POM.getTempFileName()); + domainPom.buildModule(appAliasName, GlobalConstant.DOMAIN); + + + PomBean infrastPom = new PomBean(); + infrastPom.buildGAV(groupId,artifactId,version); + infrastPom.setDependencyList(new ArrayList<>()); + infrastPom.setTemplateCode(TemplateFileEnum.INFRAST_POM.getTempFileName()); + infrastPom.buildModule(appAliasName, GlobalConstant.INFRAST); + + PomBean startPom = new PomBean(); + startPom.buildGAV(groupId,artifactId,version); + startPom.setDependencyList(new ArrayList<>()); + startPom.setTemplateCode(TemplateFileEnum.START_POM.getTempFileName()); + startPom.buildModule(appAliasName, GlobalConstant.START); + + PomBean adapterPom = new PomBean(); + adapterPom.buildGAV(groupId,artifactId,version); + adapterPom.setDependencyList(new ArrayList<>()); + adapterPom.setTemplateCode(TemplateFileEnum.ADAPTER_POM.getTempFileName()); + adapterPom.buildModule(appAliasName, GlobalConstant.ADAPTER); + + + PomBean providerPom = new PomBean(); + providerPom.buildGAV(groupId,artifactId,version); + providerPom.setDependencyList(new ArrayList<>()); + providerPom.setTemplateCode(TemplateFileEnum.PROVIDER_POM.getTempFileName()); + providerPom.buildModule(appAliasName, GlobalConstant.PROVIDER); + + + PomBean feignApiPom = new PomBean(); + feignApiPom.buildGAV(groupId,artifactId,version); + feignApiPom.setDependencyList(new ArrayList<>()); + feignApiPom.setTemplateCode(TemplateFileEnum.FEIGN_API_POM.getTempFileName()); + feignApiPom.buildModule(appAliasName, GlobalConstant.FEIGN_API); + + + + + PomBean springBootPom = new PomBean(); + springBootPom.buildGAV(groupId,artifactId,version); + springBootPom.setDependencyList(new ArrayList<>()); + springBootPom.setTemplateCode(TemplateFileEnum.PARENT_POM.getTempFileName()); + springBootPom.buildModule(appAliasName, GlobalConstant.SPRING_BOOT); + + pomBeanMap.put(GlobalConstant.PARENT,parentPom); + pomBeanMap.put(GlobalConstant.ADAPTER.replace("-",""),adapterPom); + pomBeanMap.put(GlobalConstant.START.replace("-",""),startPom); + pomBeanMap.put(GlobalConstant.CLIENT.replace("-",""),clientPom); + pomBeanMap.put(GlobalConstant.APP.replace("-",""),appPom); + pomBeanMap.put(GlobalConstant.DOMAIN.replace("-",""),domainPom); + pomBeanMap.put(GlobalConstant.INFRAST.replace("-",""),infrastPom); + pomBeanMap.put(GlobalConstant.FEIGN_API.replace("-",""),feignApiPom); + pomBeanMap.put(GlobalConstant.API.replace("-",""),apiPom); + pomBeanMap.put(GlobalConstant.CORE.replace("-",""),corePom); + pomBeanMap.put(GlobalConstant.COMMON.replace("-",""),commonPom); + pomBeanMap.put(GlobalConstant.PROVIDER.replace("-",""),providerPom); + pomBeanMap.put(GlobalConstant.SPRING_BOOT.replace("-",""),springBootPom); + + return pomBeanMap; + } + + + /** + * 返回配置的参数验证服务bean + * @return + */ + public List getValidateBeanList(String validateBeans){ + if(StringUtils.isEmpty(validateBeans)){ + return Lists.newArrayList(); + } + if(!validateBeans.contains(",")){ + return Lists.newArrayList(validateBeans); + }else { + return Lists.newArrayList(validateBeans.split(",")); + } + } + + /** + * 获取自定义配置的代码元素 + * @return + */ + public List getFtlBeanList(String customFtl,String initPom, String applicationName, String appAliasName,String groupId, String artifactId, String version){ + List ftlBeans = new ArrayList<>(); + Map pomBeanMap = getPomBeanV2(initPom, applicationName, appAliasName, groupId, artifactId, version); + for (Map.Entry pomBeanEntry : pomBeanMap.entrySet()){ + PomBean pomBean = pomBeanEntry.getValue(); + String ftlStr = pomBean.getTemplateCode()+":pom:"+pomBean.getModuleCode(); + ftlBeans.add(FtlBean.getInstance(ftlStr)); + } + + if(StringUtils.isEmpty(customFtl)){ + return ftlBeans; + } + if(customFtl.contains(",")){ + String [] ftlStrArr = customFtl.split(","); + for (String flt : ftlStrArr){ + ftlBeans.add(FtlBean.getInstance(flt)); + } + }else { + ftlBeans.add(FtlBean.getInstance(customFtl)); + } + + + return ftlBeans; + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateColaConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateColaConfig.java similarity index 31% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateColaConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateColaConfig.java index 5c672d9..2590acf 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateColaConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateColaConfig.java @@ -1,17 +1,29 @@ -package com.coderman.codemaker.config; - -import com.coderman.codemaker.bean.GlobalConstant; +package com.tianhua.codemaker.config; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.GAVBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Description: * 生成dubbo项目的配置文件 * date: 2021/6/18 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -33,46 +45,17 @@ public class ProjectTemplateColaConfig { private String applicationName; /** - * dubbo-common模块地址 - */ - @Value(value = "${cola.code.outpath.cola-adapter}") - private String moduleAdapterPath; - - /** - * dubbo-api模块地址 - */ - @Value(value = "${cola.code.outpath.cola-app}") - private String moduleAppPath; - - /** - * dubbo-api模块地址 - */ - @Value(value = "${cola.code.outpath.cola-client}") - private String moduleClientPath; - /** - * dubbo-api模块地址 - */ - @Value(value = "${cola.code.outpath.cola-infrast}") - private String moduleInfrastPath; - - /** - * dubbo-core模块地址 - */ - @Value(value = "${cola.code.outpath.cola-domain}") - private String moduleDomainPath; - - /** - * cola-start模块地址 + * 代码生成项目主目录 */ - @Value(value = "${cola.code.outpath.cola-start}") - private String moduleStartPath; + @Value(value = "${cola.code.app.project.path}") + private String projectPath; /** - * cola-feign-api模块地址 + * 应用工程别名 */ - @Value(value = "${cola.code.outpath.cola-feign-api}") - private String moduleFeignApiPath; + @Value(value = "${cola.global.applicationNameAlias}") + private String appAliasName; @@ -88,6 +71,12 @@ public class ProjectTemplateColaConfig { @Value("${cola.api.generator}") private Boolean apiGenerate; + /** + * 是否同步plantuml文档到工程中 + */ + @Value("${cola.plantumldoc.sync}") + private Boolean plantUMlDocSync; + @Value(value = "${cola.component.scan.config}") private String componentList; @@ -115,13 +104,41 @@ public class ProjectTemplateColaConfig { @Value(value = "${cola.component.init.clazz}") private String initClazz; + @Value(value = "${cola.pom.parent.groupId}") + private String groupId; + + @Value(value = "${cola.pom.parent.artifactId}") + private String artifactId; + + @Value(value = "${cola.pom.parent.version}") + private String version; + + + @Value(value = "${cola.code.template.custom.ftl}") + private String customFtl; - public String getModuleStartPath() { - return moduleStartPath; - } - public void setModuleStartPath(String moduleStartPath) { - this.moduleStartPath = moduleStartPath; + /** + * 初始化的pom依赖 + */ + @Value(value = "${cola.component.init.pom}") + private String initPom; + + /** + * 项目需要依赖的配置文件 + */ + @Value(value = "${cola.component.init.config}") + private String configFile; + + /** + * 参数校验逻辑 植入bean配置 + */ + @Value(value = "${cola.component.validate.beans}") + private String validateBeans; + + + public String getModuleStartPath() { + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.START; } public Boolean getRequest() { @@ -197,43 +214,36 @@ public class ProjectTemplateColaConfig { } public String getModuleAdapterPath() { - return moduleAdapterPath; - } - - public void setModuleAdapterPath(String moduleAdapterPath) { - this.moduleAdapterPath = moduleAdapterPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.ADAPTER; } public String getModuleAppPath() { - return moduleAppPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.APP; } - public void setModuleAppPath(String moduleAppPath) { - this.moduleAppPath = moduleAppPath; + public String getModuleParentPath() { + return projectPath + "/" + applicationName; } public String getModuleClientPath() { - return moduleClientPath; - } - - public void setModuleClientPath(String moduleClientPath) { - this.moduleClientPath = moduleClientPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.CLIENT; } public String getModuleInfrastPath() { - return moduleInfrastPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.INFRAST; } - public void setModuleInfrastPath(String moduleInfrastPath) { - this.moduleInfrastPath = moduleInfrastPath; + public String getModuleDomainPath() { + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.DOMAIN; + } - public String getModuleDomainPath() { - return moduleDomainPath; + public Boolean getPlantUMlDocSync() { + return plantUMlDocSync; } - public void setModuleDomainPath(String moduleDomainPath) { - this.moduleDomainPath = moduleDomainPath; + public void setPlantUMlDocSync(Boolean plantUMlDocSync) { + this.plantUMlDocSync = plantUMlDocSync; } /** @@ -245,36 +255,198 @@ public class ProjectTemplateColaConfig { return this.getModuleDomainPath().substring(0,index)+"/"+ GlobalConstant.API_DOC; } + + /** + * 获取UML doc文件存储路径 + * @return + */ + public String getUMLDocPath(){ + int index = this.getModuleDomainPath().lastIndexOf("/"); + return this.getModuleDomainPath().substring(0,index)+"/"+ GlobalConstant.PLANT_UML_DOC; + } + public String getComponentScanBeans() { return componentScanBeans; } - public void setComponentScanBeans(String componentScanBeans) { - this.componentScanBeans = componentScanBeans; - } public String getComponentDecorateBeans() { return componentDecorateBeans; } - public void setComponentDecorateBeans(String componentDecorateBeans) { - this.componentDecorateBeans = componentDecorateBeans; + public String getInitClazz() { + return initClazz; } + public String getModuleFeignApiPath() { + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.FEIGN_API; + } - public String getInitClazz() { - return initClazz; + /** + * 获取自定义配置的代码元素 + * @return + */ + public List getFtlBeanList(){ + List ftlBeans = new ArrayList<>(); + Map pomBeanMap = getPomBeanV2(); + for (Map.Entry pomBeanEntry : pomBeanMap.entrySet()){ + PomBean pomBean = pomBeanEntry.getValue(); + String ftlStr = pomBean.getTemplateCode()+":pom:"+pomBean.getModuleCode(); + ftlBeans.add(FtlBean.getInstance(ftlStr)); + } + + if(StringUtils.isEmpty(this.customFtl)){ + return ftlBeans; + } + if(this.customFtl.contains(",")){ + String [] ftlStrArr = this.customFtl.split(","); + for (String flt : ftlStrArr){ + ftlBeans.add(FtlBean.getInstance(flt)); + } + }else { + ftlBeans.add(FtlBean.getInstance(customFtl)); + } + + + return ftlBeans; } - public void setInitClazz(String initClazz) { - this.initClazz = initClazz; + /** + * 获取cola的统一的pom配置 + * 默认是父级pom.xml的实例 + * @return + */ + public Map getPomBeanV2(){ + Map pomBeanMap = getPomBeanMap(); + if(StringUtils.isNotEmpty(initPom)){ + String [] arr = initPom.split(","); + for (String pom : arr){ + String [] pomArr = pom.split(":"); + PomBean modulePom = pomBeanMap.get(pomArr[1]); + if(modulePom == null){ + modulePom = new PomBean(); + modulePom.setModuleName(pomArr[1]); + modulePom.setModulePrefix(appAliasName); + modulePom.setGroupId(groupId); + List gavBeanList = new ArrayList<>(); + gavBeanList.add(new GAVBean(pomArr[0])); + modulePom.setDependencyList(gavBeanList); + }else { + modulePom.getDependencyList().add(new GAVBean(pomArr[0])); + } + pomBeanMap.put(pomArr[1], modulePom); + } + } + return pomBeanMap; } - public String getModuleFeignApiPath() { - return moduleFeignApiPath; + /** + * 获取pom配置 + * @return + */ + private Map getPomBeanMap(){ + Map pomBeanMap = new HashMap<>(); + PomBean parentPom = new PomBean(); + parentPom.setUrl(null); + parentPom.buildGAV(groupId,artifactId,version); + parentPom.setTemplateCode(TemplateFileEnum.PARENT_POM.getTempFileName()); + parentPom.setAppName(applicationName); + parentPom.buildModule(appAliasName, GlobalConstant.PARENT); + parentPom.setDependencyList(new ArrayList<>()); + + + PomBean clientPom = new PomBean(); + clientPom.buildGAV(groupId,artifactId,version); + clientPom.setDependencyList(new ArrayList<>()); + clientPom.setTemplateCode(TemplateFileEnum.CLIENT_POM.getTempFileName()); + clientPom.buildModule(appAliasName, GlobalConstant.CLIENT); + + + PomBean appPom = new PomBean(); + appPom.buildGAV(groupId,artifactId,version); + appPom.setDependencyList(new ArrayList<>()); + appPom.setTemplateCode(TemplateFileEnum.APP_POM.getTempFileName()); + appPom.buildModule(appAliasName, GlobalConstant.APP); + + PomBean domainPom = new PomBean(); + domainPom.buildGAV(groupId,artifactId,version); + domainPom.setDependencyList(new ArrayList<>()); + domainPom.setTemplateCode(TemplateFileEnum.DOMAIN_POM.getTempFileName()); + domainPom.buildModule(appAliasName, GlobalConstant.DOMAIN); + + + PomBean infrastPom = new PomBean(); + infrastPom.buildGAV(groupId,artifactId,version); + infrastPom.setDependencyList(new ArrayList<>()); + infrastPom.setTemplateCode(TemplateFileEnum.INFRAST_POM.getTempFileName()); + infrastPom.buildModule(appAliasName, GlobalConstant.INFRAST); + + PomBean startPom = new PomBean(); + startPom.buildGAV(groupId,artifactId,version); + startPom.setDependencyList(new ArrayList<>()); + startPom.setTemplateCode(TemplateFileEnum.START_POM.getTempFileName()); + startPom.buildModule(appAliasName, GlobalConstant.START); + + PomBean adapterPom = new PomBean(); + adapterPom.buildGAV(groupId,artifactId,version); + adapterPom.setDependencyList(new ArrayList<>()); + adapterPom.setTemplateCode(TemplateFileEnum.ADAPTER_POM.getTempFileName()); + adapterPom.buildModule(appAliasName, GlobalConstant.ADAPTER); + + PomBean feignApiPom = new PomBean(); + feignApiPom.buildGAV(groupId,artifactId,version); + feignApiPom.setDependencyList(new ArrayList<>()); + feignApiPom.setTemplateCode(TemplateFileEnum.FEIGN_API_POM.getTempFileName()); + feignApiPom.buildModule(appAliasName, GlobalConstant.FEIGN_API); + + pomBeanMap.put(GlobalConstant.PARENT,parentPom); + pomBeanMap.put(GlobalConstant.ADAPTER.replace("-",""),adapterPom); + pomBeanMap.put(GlobalConstant.START.replace("-",""),startPom); + pomBeanMap.put(GlobalConstant.CLIENT.replace("-",""),clientPom); + pomBeanMap.put(GlobalConstant.APP.replace("-",""),appPom); + pomBeanMap.put(GlobalConstant.DOMAIN.replace("-",""),domainPom); + pomBeanMap.put(GlobalConstant.INFRAST.replace("-",""),infrastPom); + pomBeanMap.put(GlobalConstant.FEIGN_API.replace("-",""),feignApiPom); + + return pomBeanMap; } - public void setModuleFeignApiPath(String moduleFeignApiPath) { - this.moduleFeignApiPath = moduleFeignApiPath; + + /** + * 获取项目配置文件配置 + * @return + */ + public List getConfigFileBean(){ + List list = new ArrayList<>(); + if(StringUtils.isEmpty(configFile)){ + return list; + } + String [] configFileArr = configFile.split(","); + for (String configStr : configFileArr){ + String [] moduleConfigArr = configStr.split(":"); + String moduleName = moduleConfigArr[1]; + String [] configArr = moduleConfigArr[0].split("_"); + ConfigFileBean configFileBean = ConfigFileBean.getInstance(configArr[0],configArr[1], moduleName); + configFileBean.setTemplateName(moduleConfigArr[0]); + list.add(configFileBean); + } + return list; } + + /** + * 返回配置的参数验证服务bean + * @return + */ + public List getValidateBeanList(){ + if(StringUtils.isEmpty(this.validateBeans)){ + return Lists.newArrayList(); + } + if(!this.validateBeans.contains(",")){ + return Lists.newArrayList(this.validateBeans); + }else { + return Lists.newArrayList(this.validateBeans.split(",")); + } + } + + } \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDubboConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDubboConfig.java similarity index 54% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDubboConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDubboConfig.java index 4bb16c0..7abe994 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDubboConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDubboConfig.java @@ -1,21 +1,24 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; -import com.coderman.codemaker.bean.GlobalConstant; -import org.apache.commons.lang3.StringUtils; -import org.assertj.core.util.Lists; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; /** * Description: * 生成dubbo项目的配置文件 * date: 2021/6/18 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -24,6 +27,8 @@ import java.util.List; @PropertySource("classpath:projecttemplate-dubbo.properties") public class ProjectTemplateDubboConfig { + @Autowired + private ConfigParseService configParseService; /** * 项目数据库名称 */ @@ -36,24 +41,28 @@ public class ProjectTemplateDubboConfig { @Value(value = "${dubbo.global.applicationName}") private String applicationName; - /** - * dubbo-common模块地址 + * 代码生成项目主目录 */ - @Value(value = "${dubbo.code.outpath.dubbo-common}") - private String moduleCommonPath; + @Value(value = "${dubbo.code.app.project.path}") + private String projectPath; /** - * dubbo-api模块地址 + * 应用工程别名 */ - @Value(value = "${dubbo.code.outpath.dubbo-api}") - private String moduleApiPath; + @Value(value = "${dubbo.global.applicationNameAlias}") + private String appAliasName; + + + @Value(value = "${dubbo.pom.parent.groupId}") + private String groupId; + + @Value(value = "${dubbo.pom.parent.artifactId}") + private String artifactId; + + @Value(value = "${dubbo.pom.parent.version}") + private String version; - /** - * dubbo-core模块地址 - */ - @Value(value = "${dubbo.code.outpath.dubbo-core}") - private String moduleCorePath; /** * 应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 @@ -67,6 +76,12 @@ public class ProjectTemplateDubboConfig { @Value(("${dubbo.api.generator}")) private Boolean apiGenerate; + /** + * 是否同步plantuml文档到工程中 + */ + @Value("${dubbo.plantumldoc.sync}") + private Boolean plantUMlDocSync; + @Value(value = "${dubbo.component.scan.config}") private String componentList; @@ -95,30 +110,41 @@ public class ProjectTemplateDubboConfig { @Value(value = "${dubbo.component.init.clazz}") private String initClazz; + + @Value(value = "${dubbo.code.template.custom.ftl}") + private String customFtl; + + + /** + * 初始化的pom依赖 + */ + @Value(value = "${dubbo.component.init.pom}") + private String initPom; + + /** + * 项目需要依赖的配置文件 + */ + @Value(value = "${dubbo.component.init.config}") + private String configFile; + + /** + * 参数校验逻辑 植入bean配置 + */ + @Value(value = "${dubbo.component.validate.beans}") + private String validateBeans; + public String getInitClazz() { return initClazz; } - public void setInitClazz(String initClazz) { - this.initClazz = initClazz; - } - public String getComponentScanBeans() { return componentScanBeans; } - public void setComponentScanBeans(String componentScanBeans) { - this.componentScanBeans = componentScanBeans; - } - public String getComponentDecorateBeans() { return componentDecorateBeans; } - public void setComponentDecorateBeans(String componentDecorateBeans) { - this.componentDecorateBeans = componentDecorateBeans; - } - public Boolean getRequest() { return request; } @@ -139,42 +165,27 @@ public class ProjectTemplateDubboConfig { return readSenceSet; } - public void setReadSenceSet(String readSenceSet) { - this.readSenceSet = readSenceSet; - } - public String getWriteSenceSet() { return writeSenceSet; } - public void setWriteSenceSet(String writeSenceSet) { - this.writeSenceSet = writeSenceSet; - } public String getComponentList() { return componentList; } - public void setComponentList(String componentList) { - this.componentList = componentList; + public Boolean getPlantUMlDocSync() { + return plantUMlDocSync; } public Boolean getApiGenerate() { return apiGenerate; } - public void setApiGenerate(Boolean apiGenerate) { - this.apiGenerate = apiGenerate; - } - public String getPlantumlName() { return plantumlName; } - public void setPlantumlName(String plantumlName) { - this.plantumlName = plantumlName; - } - public String getDbName() { return dbName; } @@ -192,27 +203,21 @@ public class ProjectTemplateDubboConfig { } public String getModuleCommonPath() { - return moduleCommonPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.COMMON; } - public void setModuleCommonPath(String moduleCommonPath) { - this.moduleCommonPath = moduleCommonPath; - } public String getModuleApiPath() { - return moduleApiPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.API; } - public void setModuleApiPath(String moduleApiPath) { - this.moduleApiPath = moduleApiPath; - } public String getModuleCorePath() { - return moduleCorePath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.CORE; } - public void setModuleCorePath(String moduleCorePath) { - this.moduleCorePath = moduleCorePath; + public String getModuleParentPath() { + return projectPath + "/" + applicationName; } /** @@ -223,32 +228,44 @@ public class ProjectTemplateDubboConfig { int index = this.getModuleApiPath().lastIndexOf("/"); return this.getModuleApiPath().substring(0,index)+"/"+ GlobalConstant.API_DOC; } - /** - * 获取配置的组件扫描bean + * 获取UML doc文件存储路径 * @return */ - public List getComponentScanBeanList(){ - String scanBeansStr = this.getComponentScanBeans(); - - if(StringUtils.isEmpty(scanBeansStr)){ - return null; - } - return Lists.newArrayList(scanBeansStr.split(",")); + public String getUMLDocPath(){ + int index = this.getModuleCorePath().lastIndexOf("/"); + return this.getModuleCorePath().substring(0,index)+"/"+ GlobalConstant.PLANT_UML_DOC; } - /** - * 获取配置的组件装饰bean + * 获取项目配置文件配置 * @return */ - public List getComponentDecorateBeanList(){ - String decorateBeansStr = this.getComponentDecorateBeans(); + public List getConfigFileBean(){ + return configParseService.getConfigFileBean(this.configFile); + } - if(StringUtils.isEmpty(decorateBeansStr)){ - return null; - } - return Lists.newArrayList(decorateBeansStr.split(",")); + /** + * 获取统一的pom配置 + * 默认是父级pom.xml的实例 + * @return + */ + public Map getPomBeanV2(){ + return configParseService.getPomBeanV2(initPom, applicationName, appAliasName,groupId,artifactId,version); } + /** + * 返回配置的参数验证服务bean + * @return + */ + public List getValidateBeanList(){ + return configParseService.getValidateBeanList(validateBeans); + } + /** + * 获取自定义配置的代码元素 + * @return + */ + public List getFtlBeanList(){ + return configParseService.getFtlBeanList(this.customFtl,initPom, applicationName, appAliasName,groupId,artifactId,version); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDynamicDDDConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDynamicDDDConfig.java similarity index 94% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDynamicDDDConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDynamicDDDConfig.java index f6561e3..9df5737 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateDynamicDDDConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateDynamicDDDConfig.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; * 生成dubbo项目的配置文件 * date: 2021/6/18 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringCloudConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringCloudConfig.java similarity index 58% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringCloudConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringCloudConfig.java index 8338d08..b0016d5 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringCloudConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringCloudConfig.java @@ -1,11 +1,18 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; -import com.coderman.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.Map; + /** * description: ProjectTemplateConfig
* date: 2020/7/7 22:14
@@ -17,12 +24,27 @@ import org.springframework.stereotype.Component; @PropertySource("classpath:projecttemplate-springcloud.properties") public class ProjectTemplateSpringCloudConfig { + @Autowired + private ConfigParseService configParseService; + @Value(value = "${springcloud.global.dbName}") private String dbName; @Value(value = "${springcloud.global.applicationName}") private String applicationName; + /** + * 代码生成项目主目录 + */ + @Value(value = "${springcloud.code.app.project.path}") + private String projectPath; + + /** + * 应用工程别名 + */ + @Value(value = "${springcloud.global.applicationNameAlias}") + private String appAliasName; + @Value(value = "${springcloud.pom.groupId}") private String groupId; @@ -32,13 +54,6 @@ public class ProjectTemplateSpringCloudConfig { @Value(value = "${springcloud.pom.version}") private String version; - @Value(value = "${springcloud.code.feign-api}") - private String moduleFeginApiPath; - - @Value(value = "${springcloud.code.feign-provider}") - private String moduleFeginProviderPath; - - /** * 应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 */ @@ -51,6 +66,12 @@ public class ProjectTemplateSpringCloudConfig { @Value("${springcloud.api.generator}") private Boolean apiGenerate; + /** + * 是否同步plantuml文档到工程中 + */ + @Value("${springcloud.plantumldoc.sync}") + private Boolean plantUMlDocSync; + @Value(value = "${springcloud.component.scan.config}") private String componentList; @@ -79,30 +100,41 @@ public class ProjectTemplateSpringCloudConfig { private String initClazz; + @Value(value = "${springcloud.code.template.custom.ftl}") + private String customFtl; + + + /** + * 初始化的pom依赖 + */ + @Value(value = "${springcloud.component.init.pom}") + private String initPom; + + /** + * 项目需要依赖的配置文件 + */ + @Value(value = "${springcloud.component.init.config}") + private String configFile; + + /** + * 参数校验逻辑 植入bean配置 + */ + @Value(value = "${springcloud.component.validate.beans}") + private String validateBeans; + public String getInitClazz() { return initClazz; } - public void setInitClazz(String initClazz) { - this.initClazz = initClazz; - } public String getComponentScanBeans() { return componentScanBeans; } - public void setComponentScanBeans(String componentScanBeans) { - this.componentScanBeans = componentScanBeans; - } - public String getComponentDecorateBeans() { return componentDecorateBeans; } - public void setComponentDecorateBeans(String componentDecorateBeans) { - this.componentDecorateBeans = componentDecorateBeans; - } - public Boolean getRequest() { return request; } @@ -123,42 +155,22 @@ public class ProjectTemplateSpringCloudConfig { return readSenceSet; } - public void setReadSenceSet(String readSenceSet) { - this.readSenceSet = readSenceSet; - } - public String getWriteSenceSet() { return writeSenceSet; } - public void setWriteSenceSet(String writeSenceSet) { - this.writeSenceSet = writeSenceSet; - } - public String getComponentList() { return componentList; } - public void setComponentList(String componentList) { - this.componentList = componentList; - } - public Boolean getApiGenerate() { return apiGenerate; } - public void setApiGenerate(Boolean apiGenerate) { - this.apiGenerate = apiGenerate; - } - public String getPlantumlName() { return plantumlName; } - public void setPlantumlName(String plantumlName) { - this.plantumlName = plantumlName; - } - public String getDbName() { return dbName; @@ -200,20 +212,23 @@ public class ProjectTemplateSpringCloudConfig { this.version = version; } - public String getModuleFeginApiPath() { - return moduleFeginApiPath; + + public Boolean getPlantUMlDocSync() { + return plantUMlDocSync; } - public void setModuleFeginApiPath(String moduleFeginApiPath) { - this.moduleFeginApiPath = moduleFeginApiPath; + public String getModuleFeginApiPath() { + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.API; } + public String getModuleFeginProviderPath() { - return moduleFeginProviderPath; + return projectPath + "/" + applicationName + "/" +appAliasName+GlobalConstant.PROVIDER; } - public void setModuleFeginProviderPath(String moduleFeginProviderPath) { - this.moduleFeginProviderPath = moduleFeginProviderPath; + + public String getModuleParentPath() { + return projectPath + "/" + applicationName; } /** @@ -224,4 +239,46 @@ public class ProjectTemplateSpringCloudConfig { int index = this.getModuleFeginApiPath().lastIndexOf("/"); return this.getModuleFeginApiPath().substring(0,index)+"/"+ GlobalConstant.API_DOC; } + + /** + * 获取UML doc文件存储路径 + * @return + */ + public String getUMLDocPath(){ + int index = this.getModuleFeginProviderPath().lastIndexOf("/"); + return this.getModuleFeginProviderPath().substring(0,index)+"/"+ GlobalConstant.PLANT_UML_DOC; + } + + /** + * 获取项目配置文件配置 + * @return + */ + public List getConfigFileBean(){ + return configParseService.getConfigFileBean(this.configFile); + } + + /** + * 获取统一的pom配置 + * 默认是父级pom.xml的实例 + * @return + */ + public Map getPomBeanV2(){ + return configParseService.getPomBeanV2(initPom, applicationName, appAliasName,groupId,artifactId,version); + } + + /** + * 返回配置的参数验证服务bean + * @return + */ + public List getValidateBeanList(){ + return configParseService.getValidateBeanList(validateBeans); + } + + /** + * 获取自定义配置的代码元素 + * @return + */ + public List getFtlBeanList(){ + return configParseService.getFtlBeanList(this.customFtl,initPom, applicationName, appAliasName,groupId,artifactId,version); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringbootConfig.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringbootConfig.java similarity index 58% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringbootConfig.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringbootConfig.java index 3847d36..d15537c 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/config/ProjectTemplateSpringbootConfig.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/config/ProjectTemplateSpringbootConfig.java @@ -1,11 +1,18 @@ -package com.coderman.codemaker.config; +package com.tianhua.codemaker.config; -import com.coderman.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.Map; + /** * description: ProjectTemplateConfig
* date: 2020/7/7 22:14
@@ -17,28 +24,42 @@ import org.springframework.stereotype.Component; @PropertySource("classpath:projecttemplate-springboot.properties") public class ProjectTemplateSpringbootConfig { + @Autowired + private ConfigParseService configParseService; + + @Value(value = "${springboot.global.dbName}") private String dbName; @Value(value = "${springboot.global.applicationName}") private String applicationName; - @Value(value = "${codemaker.pom.groupId}") + @Value(value = "${springboot.pom.groupId}") private String groupId; - @Value(value = "${codemaker.pom.artifactId}") + @Value(value = "${springboot.pom.artifactId}") private String artifactId; - @Value(value = "${codemaker.pom.version}") + @Value(value = "${springboot.pom.version}") private String version; - @Value(value = "${codemaker.code.outpath}") - private String outPath; + + /** + * 代码生成项目主目录 + */ + @Value(value = "${springboot.code.app.project.path}") + private String projectPath; + + /** + * 应用工程别名 + */ + @Value(value = "${springboot.global.applicationNameAlias}") + private String appAliasName; /** * 应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 */ - @Value("${codemaker.domain.plantuml}") + @Value("${springboot.domain.plantuml}") private String plantumlName; /** @@ -47,6 +68,14 @@ public class ProjectTemplateSpringbootConfig { @Value("${springboot.api.generator}") private Boolean apiGenerate; + + /** + * 是否同步plantuml文档到工程中 + */ + @Value("${springboot.plantumldoc.sync}") + private Boolean plantUMlDocSync; + + @Value(value = "${springboot.component.scan.config}") private String componentList; @@ -75,30 +104,43 @@ public class ProjectTemplateSpringbootConfig { private String initClazz; + @Value(value = "${springboot.code.template.custom.ftl}") + private String customFtl; + + + /** + * 初始化的pom依赖 + */ + @Value(value = "${springboot.component.init.pom}") + private String initPom; + + /** + * 项目需要依赖的配置文件 + */ + @Value(value = "${springboot.component.init.config}") + private String configFile; + + /** + * 参数校验逻辑 植入bean配置 + */ + @Value(value = "${springboot.component.validate.beans}") + private String validateBeans; + + public String getInitClazz() { return initClazz; } - public void setInitClazz(String initClazz) { - this.initClazz = initClazz; - } public String getComponentScanBeans() { return componentScanBeans; } - public void setComponentScanBeans(String componentScanBeans) { - this.componentScanBeans = componentScanBeans; - } public String getComponentDecorateBeans() { return componentDecorateBeans; } - public void setComponentDecorateBeans(String componentDecorateBeans) { - this.componentDecorateBeans = componentDecorateBeans; - } - public Boolean getRequest() { return request; } @@ -127,41 +169,21 @@ public class ProjectTemplateSpringbootConfig { return writeSenceSet; } - public void setWriteSenceSet(String writeSenceSet) { - this.writeSenceSet = writeSenceSet; - } public String getComponentList() { return componentList; } - public void setComponentList(String componentList) { - this.componentList = componentList; - } public Boolean getApiGenerate() { return apiGenerate; } - public void setApiGenerate(Boolean apiGenerate) { - this.apiGenerate = apiGenerate; - } public String getPlantumlName() { return plantumlName; } - public void setPlantumlName(String plantumlName) { - this.plantumlName = plantumlName; - } - - public String getOutPath() { - return outPath; - } - - public void setOutPath(String outPath) { - this.outPath = outPath; - } public String getDbName() { return dbName; @@ -203,6 +225,15 @@ public class ProjectTemplateSpringbootConfig { this.version = version; } + + public Boolean getPlantUMlDocSync() { + return plantUMlDocSync; + } + + public void setPlantUMlDocSync(Boolean plantUMlDocSync) { + this.plantUMlDocSync = plantUMlDocSync; + } + @Override public String toString() { return "ProjectTemplateSpringbootConfig{" + @@ -211,7 +242,6 @@ public class ProjectTemplateSpringbootConfig { ", groupId='" + groupId + '\'' + ", artifactId='" + artifactId + '\'' + ", version='" + version + '\'' + - ", outPath='" + outPath + '\'' + ", plantumlName='" + plantumlName + '\'' + '}'; } @@ -221,6 +251,50 @@ public class ProjectTemplateSpringbootConfig { * @return */ public String getApiDocPath(){ - return this.getOutPath() + "/" + GlobalConstant.API_DOC; + return getModulePath() + "/" + GlobalConstant.API_DOC; + } + + /** + * 获取UML doc文件存储路径 + * @return + */ + public String getUMLDocPath(){ + return getModulePath() + "/" + GlobalConstant.PLANT_UML_DOC; + } + + public String getModulePath() { + return projectPath + "/" + applicationName; + } + /** + * 获取项目配置文件配置 + * @return + */ + public List getConfigFileBean(){ + return configParseService.getConfigFileBean(this.configFile); + } + + /** + * 获取统一的pom配置 + * 默认是父级pom.xml的实例 + * @return + */ + public Map getPomBeanV2(){ + return configParseService.getPomBeanV2(initPom, applicationName, appAliasName,groupId,artifactId,version); + } + + /** + * 返回配置的参数验证服务bean + * @return + */ + public List getValidateBeanList(){ + return configParseService.getValidateBeanList(validateBeans); + } + + /** + * 获取自定义配置的代码元素 + * @return + */ + public List getFtlBeanList(){ + return configParseService.getFtlBeanList(this.customFtl,initPom, applicationName, appAliasName,groupId,artifactId,version); } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/CodeMakerController.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/CodeMakerController.java similarity index 85% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/CodeMakerController.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/CodeMakerController.java index 93cc4b1..84676c9 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/CodeMakerController.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/CodeMakerController.java @@ -1,13 +1,14 @@ -package com.coderman.codemaker.controller; - -import com.alibaba.fastjson.JSON; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.WriteCodeService; -import com.coderman.codemaker.service.WriteDynamicCodeService; -import com.coderman.codemaker.service.write.WriteSpringbootService; -import com.coderman.codemaker.service.registry.element.DynamicDDDVarRegistry; -import com.coderman.codemaker.service.registry.element.MapperXmlVarRegistry; +package com.tianhua.codemaker.controller; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.WriteCodeService; +import com.tianhua.codemaker.service.WriteDynamicCodeService; +import com.tianhua.codemaker.service.write.WriteSpringbootService; +import com.tianhua.codemaker.service.registry.element.DynamicDDDVarRegistry; +import com.tianhua.codemaker.service.registry.element.MapperXmlVarRegistry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -26,6 +27,9 @@ import java.util.*; */ @RestController public class CodeMakerController { + + private Logger logger = LoggerFactory.getLogger(CodeMakerController.class); + @Resource(name = "mapperXmlVarRegistry") private MapperXmlVarRegistry mapperXmlVarRegistry; @@ -52,6 +56,7 @@ public class CodeMakerController { if(map.containsKey("dynamicddd")){ writeDynamicCodeService.writeAllWithDDD(map); }else { + logger.info("纯数据库模式生成---->"); Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); Map varMap = new HashMap<>(); @@ -67,7 +72,9 @@ public class CodeMakerController { writeCodeService.writeAll(v.getHumpClassName(),varMap,""); }); //写公共服务类 - writeCodeService.writeCommon(varMap,""); + writeCodeService.writeCommon(varMap); + //写纯DB模式下的配置信息和pom文件 + writeDynamicCodeService.writeConfigForDBModel(varMap); //渲染e-r图 writeCodeService.writeERPicture(tableBeanMap,columnBeanListMap); } @@ -84,7 +91,6 @@ public class CodeMakerController { Map map = mapperXmlVarRegistry.getTemplateVar(); Map tableBeanMap = (Map)map.get("table"); - System.out.println("tableBeanMap====="+ JSON.toJSONString(tableBeanMap)); Map> columnBeanListMap = (Map>)map.get("columns"); Map varMap = new HashMap<>(); //循环写每个表对应的类 @@ -98,10 +104,13 @@ public class CodeMakerController { writeFileService.writeAll(v.getHumpClassName(),varMap,"/fast/"); }); + //写公共服务类 - writeFileService.writeCommon(varMap,"/fast/"); + writeCodeService.writeCommon(varMap); + //写纯DB模式下的配置信息和pom文件 + writeDynamicCodeService.writeConfigForDBModel(varMap); //渲染e-r图 - writeFileService.writeERPicture(tableBeanMap,columnBeanListMap); + writeCodeService.writeERPicture(tableBeanMap,columnBeanListMap); return "success"; } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorController.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorController.java similarity index 85% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorController.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorController.java index 5d9ba0b..59b5e18 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorController.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorController.java @@ -1,16 +1,16 @@ -package com.coderman.codemaker.controller; - -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.EnumBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.WriteCodeService; -import com.coderman.codemaker.service.registry.element.*; -import com.coderman.codemaker.service.template.FreemarkerService; -import com.coderman.codemaker.service.WriteDynamicCodeService; +package com.tianhua.codemaker.controller; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.EnumBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.WriteCodeService; +import com.tianhua.codemaker.service.registry.element.*; +import com.tianhua.codemaker.service.template.FreemarkerService; +import com.tianhua.codemaker.service.WriteDynamicCodeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -116,7 +116,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List classBeanList = (List)map.get("adaptervo"); - writeDynamicCodeService.writeVO(classBeanList); + writeDynamicCodeService.writeClassEle(classBeanList,TemplateFileEnum.VO_DDD,TemplateFileEnum.VO_DDD,null); }else { Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); @@ -215,7 +215,7 @@ public class GeneratorController { Map map = serviceImplVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List classBeanList = (List)map.get("controller"); - writeDynamicCodeService.writeController(classBeanList); + writeDynamicCodeService.writeClassEle(classBeanList,TemplateFileEnum.CONTROLLER_DDD,TemplateFileEnum.CONTROLLER_DDD,null); }else { Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); @@ -268,11 +268,8 @@ public class GeneratorController { public String getFacadeTemplate(){ Map map = serviceVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ - List interfaceBeanList = (List)map.get("derivefacade"); - writeDynamicCodeService.writeFacade(interfaceBeanList); - - List classBeanList = (List)map.get("derivefacadeimpl"); - writeDynamicCodeService.writeFacadeImpl(classBeanList); + writeDynamicCodeService.writeInterfaceEle((List)map.get("derivefacade"),TemplateFileEnum.FACADE_DDD,TemplateFileEnum.FACADE,null); + writeDynamicCodeService.writeClassEle((List)map.get("derivefacadeimpl"),TemplateFileEnum.FACADE_IMPL_DDD, TemplateFileEnum.FACADE_IMPL,null); }else { Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); @@ -303,7 +300,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List classBeanList = (List)map.get("derivedto"); - writeDynamicCodeService.writeDTO(classBeanList); + writeDynamicCodeService.writeClassEle(classBeanList,TemplateFileEnum.DTO_DDD, TemplateFileEnum.DTO_DDD,null); }else { Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); @@ -330,7 +327,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List classBeanList = (List)map.get("domainbo"); - writeDynamicCodeService.writeBO(classBeanList); + writeDynamicCodeService.writeClassEle(classBeanList,TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.BUSINESS_OBJECT_DDD,null); }else { Map tableBeanMap = (Map)map.get("table"); Map> columnBeanListMap = (Map>)map.get("columns"); @@ -363,8 +360,8 @@ public class GeneratorController { if(map.containsKey("dynamicddd")){ List valueObjectBeanList = (List)map.get("domainvalueobject"); List enumBeanList = (List)map.get("valueobjectenum"); - writeDynamicCodeService.writeValueObject(valueObjectBeanList); - writeDynamicCodeService.writeEnum(enumBeanList); + writeDynamicCodeService.writeClassEle(valueObjectBeanList,TemplateFileEnum.VALUE_OBJECT,TemplateFileEnum.VALUE_OBJECT,null); + writeDynamicCodeService.writeEnumEle(enumBeanList,null); }else { log.warn("valueobject class generation depends on plantuml..........!!!!!!!"); } @@ -381,7 +378,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List classBeanList = (List)map.get("domainmsg"); - writeDynamicCodeService.writeMsgBody(classBeanList); + writeDynamicCodeService.writeClassEle(classBeanList,TemplateFileEnum.MESSAGE_BODY,TemplateFileEnum.BUSINESS_OBJECT_DDD,null); }else { log.warn("msgbody class generation depends on plantuml..........!!!!!!!"); } @@ -399,13 +396,9 @@ public class GeneratorController { List gatawayBeanList = (List)map.get("gataway"); List repositoryBeanList = (List)map.get("repository"); gatawayBeanList.addAll(repositoryBeanList); - writeDynamicCodeService.writeDomainGataway(gatawayBeanList); - - List gatawayImplBeanList = (List)map.get("gatawayimpl"); - writeDynamicCodeService.writeGatawayImpl(gatawayImplBeanList); - - List repositoryImplBeanList = (List)map.get("repositoryimpl"); - writeDynamicCodeService.writeRepositoryImpl(repositoryImplBeanList); + writeDynamicCodeService.writeInterfaceEle(gatawayBeanList,TemplateFileEnum.GATAWAY,TemplateFileEnum.GATAWAY,null); + writeDynamicCodeService.writeClassEle((List)map.get("gatawayimpl"), TemplateFileEnum.GATAWAY_IMPL,TemplateFileEnum.GATAWAY_IMPL,null); + writeDynamicCodeService.writeClassEle((List)map.get("repositoryimpl"), TemplateFileEnum.GATAWAY_IMPL,TemplateFileEnum.GATAWAY_IMPL,null); }else { //gataway需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("gataway class generation depends on plantuml..........!!!!!!!"); @@ -422,13 +415,9 @@ public class GeneratorController { public String getAclAdapter(){ Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ - List aclBeanList = (List)map.get("infrastacl"); - List aclImplBeanList = (List)map.get("infrastaclimpl"); - - List aclParamBeanList = (List)map.get("infrastaclparam"); - writeDynamicCodeService.writeAclInterface(aclBeanList); - writeDynamicCodeService.writeAclInterfaceImpl(aclImplBeanList); - writeDynamicCodeService.writeAclInterfaceParam(aclParamBeanList); + writeDynamicCodeService.writeInterfaceEle((List)map.get("infrastacl"),TemplateFileEnum.ACL,TemplateFileEnum.ACL,null); + writeDynamicCodeService.writeClassEle((List)map.get("infrastaclparam"),TemplateFileEnum.BUSINESS_OBJECT_DDD,TemplateFileEnum.ACL_PARAM,null); + writeDynamicCodeService.writeClassEle((List)map.get("infrastaclimpl"),TemplateFileEnum.ACL_IMPL,TemplateFileEnum.ACL_IMPL,null); }else { //gataway需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("gataway class generation depends on plantuml..........!!!!!!!"); @@ -445,7 +434,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List commandBeanList = (List)map.get("cmd"); - writeDynamicCodeService.writeCommand(commandBeanList); + writeDynamicCodeService.writeClassEle(commandBeanList,TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.CMD,null); }else { //gataway需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("gataway class generation depends on plantuml..........!!!!!!!"); @@ -482,7 +471,7 @@ public class GeneratorController { Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ List factoryBeanList = (List)map.get("domainfactory"); - writeDynamicCodeService.writeFactory(factoryBeanList); + writeDynamicCodeService.writeClassEle(factoryBeanList,TemplateFileEnum.FACTORY, TemplateFileEnum.FACTORY,null); }else { //factory需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("factory class generation depends on plantuml..........!!!!!!!"); @@ -499,8 +488,7 @@ public class GeneratorController { public String getDTOBOConvert(){ Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ - List dtoboconvertBeanList = (List)map.get("dtoboconvert"); - writeDynamicCodeService.writeDTOBOConvert(dtoboconvertBeanList); + writeDynamicCodeService.writeInterfaceEle((List)map.get("dtoboconvert"),TemplateFileEnum.DTOBO_CONVERT,TemplateFileEnum.CONVERT,null); }else { //dtoboconvert需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("dtoboconvert class generation depends on plantuml..........!!!!!!!"); @@ -516,8 +504,7 @@ public class GeneratorController { public String getVOBOConvert(){ Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ - List voboconvertBeanList = (List)map.get("voboconvert"); - writeDynamicCodeService.writeVOBOConvert(voboconvertBeanList); + writeDynamicCodeService.writeInterfaceEle((List)map.get("voboconvert"),TemplateFileEnum.VOBO_CONVERT,TemplateFileEnum.CONVERT,null); }else { //voboconvert需要依赖plantUML类图标示,否则基于数据库表生成会显得不伦不类 log.warn("voboconvert class generation depends on plantuml..........!!!!!!!"); @@ -532,8 +519,7 @@ public class GeneratorController { public String getDOBOConvert(){ Map map = entityVarRegistry.getTemplateVar(); if(map.containsKey("dynamicddd")){ - List doboconvertBeanList = (List)map.get("doboconvert"); - writeDynamicCodeService.writeDOBOConvert(doboconvertBeanList); + writeDynamicCodeService.writeInterfaceEle((List)map.get("doboconvert"),TemplateFileEnum.DOBO_CONVERT,TemplateFileEnum.CONVERT,null); }else { log.warn("doboconvert class generation depends on plantuml..........!!!!!!!"); } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorFastController.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorFastController.java similarity index 96% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorFastController.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorFastController.java index 2d9eace..0ae3886 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/controller/GeneratorFastController.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/controller/GeneratorFastController.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.controller; - -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.write.WriteSpringbootService; -import com.coderman.codemaker.service.registry.element.*; -import com.coderman.codemaker.utils.FreemarkerUtils; +package com.tianhua.codemaker.controller; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.write.WriteSpringbootService; +import com.tianhua.codemaker.service.registry.element.*; +import com.tianhua.codemaker.utils.FreemarkerUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/dao/SqlMapper.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/dao/SqlMapper.java similarity index 69% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/dao/SqlMapper.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/dao/SqlMapper.java index 40f80e3..179b687 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/dao/SqlMapper.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/dao/SqlMapper.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.dao; +package com.tianhua.codemaker.dao; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; import org.springframework.stereotype.Repository; import java.util.List; /** - * @Author fanchunshuai + * @Author shenshuai * @Date 2019/11/22 17 * @Description:mysql 元数据查询接口 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/exceptions/ConfigException.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/exceptions/ConfigException.java similarity index 82% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/exceptions/ConfigException.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/exceptions/ConfigException.java index bdf00e1..f83d0dc 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/exceptions/ConfigException.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/exceptions/ConfigException.java @@ -1,10 +1,10 @@ -package com.coderman.codemaker.exceptions; +package com.tianhua.codemaker.exceptions; /** * Description: * date: 2021/6/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/listener/RefrashConfigListener.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/listener/RefrashConfigListener.java similarity index 73% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/listener/RefrashConfigListener.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/listener/RefrashConfigListener.java index 47fa3bf..dbc88cf 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/listener/RefrashConfigListener.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/listener/RefrashConfigListener.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.listener; +package com.tianhua.codemaker.listener; -import com.coderman.codemaker.api.ICompScanService; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.DefaultPackageConfig; -import com.coderman.codemaker.service.dsl.DSLService; +import com.tianhua.codemaker.app.FunctionCodeAppWriteService; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.DefaultPackageConfig; +import com.tianhua.codemaker.service.dsl.DSLService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -12,14 +12,12 @@ import org.springframework.context.ApplicationListener; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * Description:项目启动监听器,做数据初始化使用 * date: 2020/9/29 10:21 上午 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -31,15 +29,16 @@ public class RefrashConfigListener implements ApplicationListener classBeanList, TemplateFileEnum templateFileEnum, TemplateFileEnum eleEnum, IWriteFileService writeFileService) { + boolean dynamicDDD = false; + if(writeFileService == null){ + writeFileService = appServiceConfig.getModuleWriteService(templateFileEnum.getTempFileName()); + }else { + dynamicDDD = true; + } + if (writeFileService == null) { + return; + } + for (ClassBean classBean : classBeanList){ + Map varMap = classBean.buildVarMap(); + String boContent; + if(dynamicDDD){ + boContent = freemarkerService.parseTplDynamicDDD(templateFileEnum.getTempFileName(), varMap); + }else { + boContent = freemarkerService.parseTpl(templateFileEnum.getTempFileName(), varMap); + } + WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,eleEnum); + writeFileService.writeContent(writeContentBean); + } + } + + + /** + * 所有interface类型的element统一写入口 + * @param interfaceBeanList + * @param templateFileEnum + * @param eleEnum + */ + public void writeInterfaceEle(List interfaceBeanList, TemplateFileEnum templateFileEnum, TemplateFileEnum eleEnum, IWriteFileService writeFileService){ + boolean dynamicDDD = false; + if(writeFileService == null){ + writeFileService = appServiceConfig.getModuleWriteService(templateFileEnum.getTempFileName()); + }else { + dynamicDDD = true; + } + if (writeFileService == null) { + return; + } + for (InterfaceBean interfaceBean : interfaceBeanList){ + Map varMap = interfaceBean.buildVarMap(); + String interfaceContent; + if(dynamicDDD){ + interfaceContent = freemarkerService.parseTplDynamicDDD(templateFileEnum.getTempFileName(), varMap); + }else { + interfaceContent = freemarkerService.parseTpl(templateFileEnum.getTempFileName(), varMap); + } + WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,eleEnum); + writeFileService.writeContent(writeContentBean); + } + } + + + public void writeEnumEle(List enumBeanList, IWriteFileService writeFileService){ + if(writeFileService == null){ + writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.ENUM.getTempFileName()); + } + if (writeFileService == null) { + return; + } + writeFileService = getRoute(enumBeanList.get(0).getPackageName(),writeFileService); + //写枚举 + for (EnumBean enumBean : enumBeanList){ + Map varMap = enumBean.buildVarMap(); + String enumContent; + enumContent = freemarkerService.parseTpl(TemplateFileEnum.ENUM.getTempFileName(), varMap); + WriteContentBean writeContentBean = enumBean.buildWriteContentBean(enumContent,TemplateFileEnum.ENUM); + writeFileService.writeContent(writeContentBean); + } + } + + + + + private IWriteFileService getRoute(String packageName,IWriteFileService writeFileService){ + String appType = appServiceConfig.getApplicationType(); + if (appType.equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return writeFileService; + } else if (appType.equals(ModuleEnum.DUBBO_API.getAppName()) && packageName.contains("api")) { + return appServiceConfig.getWriteServiceByModuleName(ModuleEnum.DUBBO_API.getModuleName()); + } else if (appType.equals(ModuleEnum.COLA_ADAPTER.getAppName()) && packageName.contains("api")) { + return appServiceConfig.getWriteServiceByModuleName(ModuleEnum.COLA_CLIENT.getModuleName()); + } else if (appType.equals(ModuleEnum.SC_FEIGN_API.getAppName()) && packageName.contains("api")) { + return appServiceConfig.getWriteServiceByModuleName(ModuleEnum.SC_FEIGN_API.getModuleName()); + } + return writeFileService; + } + + + + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/AnnotationParseService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/AnnotationParseService.java new file mode 100644 index 0000000..c18b1f8 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/AnnotationParseService.java @@ -0,0 +1,183 @@ +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.config.AnnotationTagBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.util.*; + +/** + * Description:类和方法上的注解标签解析 + * date: 2022/1/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class AnnotationParseService { + + @Autowired + private ResourceLoader resourceLoader; + + @Autowired + private AppServiceConfig appServiceConfig; + /** + * 统一处理注解标签内容 + * @param plantUmlContextBean + */ + public void dealPlantUmlContextAnnotation(PlantUmlContextBean plantUmlContextBean){ + Map annotationTagBeanMap = buildAnnotationTagBeanMap(); + plantUmlContextBean.getClassBeanMap().forEach((k,classBean)->{ + //处理类上的注解信息 + if(CollectionUtils.isNotEmpty(classBean.getAnnotationTagList())){ + List annotationContentList = new ArrayList<>(); + + for (String annotationTag : classBean.getAnnotationTagList()){ + AnnotationTagBean annotationTagBean = annotationTagBeanMap.get(annotationTag); + if(annotationTagBean != null){ + String newPackage = annotationTagBean.getPackageName().replace("${package}",appServiceConfig.getPackage()); + classBean.addImportClass(newPackage + "."+annotationTagBean.getClassName()); + classBean.addDynamicImportClass(newPackage + "."+annotationTagBean.getClassName()); + annotationContentList.add(annotationTagBean.getAnnotation()); + } + } + classBean.setAnnotationTagList(annotationContentList); + } + + //处理方法上的注解信息 + if(CollectionUtils.isNotEmpty(classBean.getMethodBeanList())){ + for (MethodBean methodBean : classBean.getMethodBeanList()){ + List annotationContentList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(methodBean.getAnnotationTagList())){ + for (String annotationTag : methodBean.getAnnotationTagList()){ + AnnotationTagBean annotationTagBean = annotationTagBeanMap.get(annotationTag); + if(annotationTagBean != null){ + String newPackage = annotationTagBean.getPackageName().replace("${package}",appServiceConfig.getPackage()); + classBean.addImportClass(newPackage+"."+annotationTagBean.getClassName()); + classBean.addDynamicImportClass(newPackage + "."+annotationTagBean.getClassName()); + + annotationContentList.add(annotationTagBean.getAnnotation()); + } + } + methodBean.setAnnotationTagList(annotationContentList); + } + } + } + }); + + plantUmlContextBean.getInterfaceBeanMap().forEach((k,interfaceBean)->{ + //处理类上的注解信息 + if(CollectionUtils.isNotEmpty(interfaceBean.getAnnotationTagList())){ + List annotationContentList = new ArrayList<>(); + for (String annotationTag : interfaceBean.getAnnotationTagList()){ + AnnotationTagBean annotationTagBean = annotationTagBeanMap.get(annotationTag); + if(annotationTagBean != null){ + String newPackage = annotationTagBean.getPackageName().replace("${package}",appServiceConfig.getPackage()); + if(annotationTagBean.modifyOnThis()){ + interfaceBean.addImportClass(newPackage+"."+annotationTagBean.getClassName()); + }else { + interfaceBean.addChildImportClass(newPackage+"."+annotationTagBean.getClassName()); + } + annotationContentList.add(annotationTagBean.getAnnotation()); + } + } + interfaceBean.setAnnotationTagList(annotationContentList); + } + + //处理方法上的注解信息 + if(CollectionUtils.isNotEmpty(interfaceBean.getMethodBeanList())){ + for (MethodBean methodBean : interfaceBean.getMethodBeanList()){ + List annotationContentList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(methodBean.getAnnotationTagList())){ + for (String annotationTag : methodBean.getAnnotationTagList()){ + AnnotationTagBean annotationTagBean = annotationTagBeanMap.get(annotationTag); + if(annotationTagBean != null){ + String newPackage = annotationTagBean.getPackageName().replace("${package}",appServiceConfig.getPackage()); + if(annotationTagBean.modifyOnThis()){ + interfaceBean.addImportClass(newPackage+"."+annotationTagBean.getClassName()); + }else { + interfaceBean.addChildImportClass(newPackage+"."+annotationTagBean.getClassName()); + } + annotationContentList.add(annotationTagBean.getAnnotation()); + } + } + methodBean.setAnnotationTagList(annotationContentList); + } + } + } + }); + + } + + /** + * 构建注解标示对象配置 + * @return + */ + public Map buildAnnotationTagBeanMap(){ + Map annotationTagBeanMap = new HashMap<>(); + try { + String path = GlobalConstant.COMP_COMPONENT_ANNOTATION_TAG_PATH; + Resource resource = resourceLoader.getResource("classpath:"+path); + File file = resource.getFile(); + for (File annoTagFile : file.listFiles()){ + Properties properties = readPropertiesFile(annoTagFile.getAbsolutePath()); + AnnotationTagBean annotationTagBean = new AnnotationTagBean(); + for (Map.Entry entry : properties.entrySet()) { + if (entry.getKey().equals(GlobalConstant.COMP_PACKAGE)) { + annotationTagBean.setPackageName(entry.getValue().toString()); + } + if (entry.getKey().equals(GlobalConstant.COMP_ANNOTATION_ALIAS)) { + annotationTagBean.setClassAlias(entry.getValue().toString()); + } + if (entry.getKey().equals(GlobalConstant.COMP_ANNOTATION_PRE)) { + annotationTagBean.setAnnotation(entry.getValue().toString()); + } + if (entry.getKey().equals(GlobalConstant.COMP_MODIFY_ON)) { + annotationTagBean.setModifyOn(entry.getValue().toString()); + } + } + annotationTagBean.setClassName(annoTagFile.getName().replace(".properties","")); + annotationTagBeanMap.put(annotationTagBean.getClassAlias(),annotationTagBean); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return annotationTagBeanMap; + } + + + /** + * 读取组件配置文件 + * @param filePath + * @return + * @throws IOException + */ + public Properties readPropertiesFile(String filePath) throws IOException { + InputStream inputStream = null; + try { + + Properties props = new Properties(); + // 使用InPutStream流读取properties文件 + BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath)); + props.load(bufferedReader); + return props; + } catch (Exception e) { + return null; + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteApiDocService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteApiDocService.java similarity index 76% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteApiDocService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteApiDocService.java index 5183bc5..06fde44 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteApiDocService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteApiDocService.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.service; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.bean.apidoc.ApiDocBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.template.FreemarkerService; +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.bean.apidoc.ApiDocBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.template.FreemarkerService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,7 +21,7 @@ import java.util.stream.Collectors; * Description: * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -49,9 +49,7 @@ public class WriteApiDocService { List apiDocBeanList = new ArrayList<>(); - classBean.getMethodBeanList().forEach(methodBean -> { - apiDocBeanList.add(methodBean.buildApiDocBean(classVOBeanMap)); - }); + classBean.getMethodBeanList().forEach(methodBean -> apiDocBeanList.add(methodBean.buildApiDocBean(classVOBeanMap))); varMap.put("apiList", apiDocBeanList); String content = freemarkerService.parseTplApi(TemplateFileEnum.API_HTTP.getTempFileName(), varMap); @@ -94,7 +92,14 @@ public class WriteApiDocService { .templateName(TemplateFileEnum.API_HTTP.getTempFileName()).build(); writeFileService.writeContent(writeContentBean); } + } + public void writeSqlDoc(List sqlContentList, IWriteFileService writeFileService){ + StringBuilder stringBuilder = new StringBuilder(""); + sqlContentList.forEach(sql->stringBuilder.append(sql)); + WriteContentBean writeContentBean = WriteContentBean.builder().content(stringBuilder.toString()) + .templateName(TemplateFileEnum.SQL.getTempFileName()).build(); + writeFileService.writeContent(writeContentBean); } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteCodeService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteCodeService.java similarity index 83% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteCodeService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteCodeService.java index 1159244..ae14dfd 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/WriteCodeService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteCodeService.java @@ -1,15 +1,15 @@ -package com.coderman.codemaker.service; - -import com.coderman.codemaker.app.IWriteFileService; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.bean.WriteContentBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import com.coderman.codemaker.service.template.FreemarkerService; -import com.coderman.codemaker.utils.Constant; +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.dberpicture.DBErPictureService; +import com.tianhua.codemaker.service.template.FreemarkerService; +import com.tianhua.codemaker.utils.Constant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -26,7 +26,7 @@ import java.util.Map; * date: 2021/6/22 * * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -92,8 +92,11 @@ public class WriteCodeService { if (writeFileService == null) { return; } + String classPackageName = content.split("\n")[0].replace("package","").replace(" ","").replace(";",""); + WriteContentBean writeContentBean = WriteContentBean.builder().content(content) .templateName(TemplateFileEnum.DATA_OBJECT.getTempFileName()) + .classPackageName(classPackageName) .humpClassName(humpClassName).build(); writeFileService.writeContent(writeContentBean); @@ -359,73 +362,72 @@ public class WriteCodeService { * @param humpClassName * @param varMap */ - public void writeAll(String humpClassName, Map varMap, String fast) { + public void writeAll(final String humpClassName, Map varMap, String fast) { if (StringUtils.isEmpty(fast)) { fast = "/" + appServiceConfig.getApplicationType() + "/"; } String entityContent = freemarkerService.parseTpl(fast + TemplateFileEnum.ENTITY.getTempFileName(), varMap); - this.writeEntity(entityContent, humpClassName); + this.writeEntity(entityContent, humpClassName + "Entity"); String serviceContent = freemarkerService.parseTpl(fast + TemplateFileEnum.SERVICE.getTempFileName(), varMap); - this.writeService(serviceContent, humpClassName); + this.writeService(serviceContent, humpClassName + "Service"); String serviceImplContent = freemarkerService.parseTpl(fast + TemplateFileEnum.SERVICE_IMPL.getTempFileName(), varMap); - this.writeServiceImpl(serviceImplContent, humpClassName); + this.writeServiceImpl(serviceImplContent, humpClassName + "ServiceImpl"); String mapperXmlContent = freemarkerService.parseTpl(fast + TemplateFileEnum.MAPPER_XML.getTempFileName(), varMap); - this.writeMapperXml(mapperXmlContent, humpClassName); + this.writeMapperXml(mapperXmlContent, humpClassName + "Mapper"); String mapperContent = freemarkerService.parseTpl(fast + TemplateFileEnum.MAPPER.getTempFileName(), varMap); - this.writeMapper(mapperContent, humpClassName); + this.writeMapper(mapperContent, humpClassName+ "Mapper"); String controllerContent = freemarkerService.parseTpl(fast + TemplateFileEnum.CONTROLLER.getTempFileName(), varMap); - this.writeController(controllerContent, humpClassName); + this.writeController(controllerContent, humpClassName+ "Controller"); String voContent = freemarkerService.parseTpl(fast + TemplateFileEnum.VO.getTempFileName(), varMap); - this.writeVO(voContent, humpClassName); + this.writeVO(voContent, humpClassName + "VO"); String testContent = freemarkerService.parseTpl(fast + TemplateFileEnum.TEST.getTempFileName(), varMap); - this.writeTest(testContent, humpClassName); + if(appServiceConfig.getApplicationType().equals("springboot")){ + this.writeTest(testContent, humpClassName +"Service"); + }else { + this.writeTest(testContent, humpClassName + "Facade"); + } String boContent = freemarkerService.parseTpl(fast + TemplateFileEnum.BUSINESS_OBJECT.getTempFileName(), varMap); - this.writeBO(boContent, humpClassName); + this.writeBO(boContent, humpClassName + "BO"); String dtoContent = freemarkerService.parseTpl(fast + TemplateFileEnum.DTO.getTempFileName(), varMap); - this.writeDTO(dtoContent, humpClassName); + this.writeDTO(dtoContent, humpClassName + "DTO"); String facadeContent = freemarkerService.parseTpl(fast + TemplateFileEnum.FACADE.getTempFileName(), varMap); - this.writeFacade(facadeContent, humpClassName); + this.writeFacade(facadeContent, humpClassName + "Facade"); String facadeImplContent = freemarkerService.parseTpl(fast + TemplateFileEnum.FACADE_IMPL.getTempFileName(), varMap); - this.writeFacadeImpl(facadeImplContent, humpClassName); + this.writeFacadeImpl(facadeImplContent, humpClassName + "FacadeImpl"); String doContent = freemarkerService.parseTpl(fast + TemplateFileEnum.DATA_OBJECT.getTempFileName(), varMap); - this.writeDO(doContent, humpClassName); + this.writeDO(doContent, humpClassName + "DO"); } /** * 写公共基础服务类 - * * @param varMap */ - public void writeCommon(Map varMap, String fast) { - - - String baseControllerContent = freemarkerService.parseTpl(fast + TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), varMap); - this.writeBaseController(baseControllerContent); - - String SpringApplicationContextContent = freemarkerService.parseTpl(fast + TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), varMap); - this.writeSpringApplicationContext(SpringApplicationContextContent); - - String application = freemarkerService.parseTpl(fast + TemplateFileEnum.APPLICATION.getTempFileName(), varMap); - this.writeApplication(application); - - String facadeAop = freemarkerService.parseTpl(fast + TemplateFileEnum.FACADE_AOP.getTempFileName(), varMap); - this.writeFacadeAop(facadeAop); - + public void writeCommon(Map varMap) { + Map> initClassMap = appServiceConfig.getInitClassMapList(); + if(initClassMap == null || initClassMap.isEmpty()){ + return; + } + for (Map.Entry> entry : initClassMap.entrySet()){ + for (String classTemplate : entry.getValue()){ + String clazzContent = freemarkerService.parseTplCommon(classTemplate, varMap); + this.writeInitClass(entry.getKey(),clazzContent,classTemplate); + } + } } /** @@ -435,6 +437,11 @@ public class WriteCodeService { * @param columnBeanListMap */ public void writeERPicture(Map tableBeanMap, Map> columnBeanListMap) { + //这里走了e-r图构建了,所以不需要再次渲染e-r图了 + if(!appServiceConfig.getLinkDB()){ + return; + } + String filePath = appServiceConfig.getErPictureOutPath() + Constant.ER_PICTURE + "/" + appServiceConfig.getDbName() + ".puml"; List tableBeanList = new ArrayList<>(); tableBeanMap.forEach((k, v) -> { @@ -482,5 +489,25 @@ public class WriteCodeService { writeFileService.writeContent(writeContentBean); } + /** + * 写配置文件的统一方法 + * @param moduleName + * @param content + */ + public void writeConfig(String moduleName, String content,String configFileName){ + if(StringUtils.isEmpty(content)){ + return; + } + IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(moduleName); + if (writeFileService == null) { + return; + } + + WriteContentBean writeContentBean = WriteContentBean.builder().content(content) + .templateName(GlobalConstant.CONFIG) + .humpClassName(configFileName).build(); + writeFileService.writeContent(writeContentBean); + } + } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicCodeService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicCodeService.java new file mode 100644 index 0000000..eb1453c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicCodeService.java @@ -0,0 +1,460 @@ +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.config.ConfigFileBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.config.ProjectBean; +import com.tianhua.codemaker.bean.dddelement.ElementBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.EnumBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; + +import com.tianhua.codemaker.config.ConfigFactory; +import com.tianhua.codemaker.enums.ClassEnum; +import com.tianhua.codemaker.enums.ModuleEnum; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.component.ComponentDecorateService; +import com.tianhua.codemaker.service.plantuml.WriteDomainPlantDocService; +import com.tianhua.codemaker.service.registry.factory.ElementFactory; +import com.tianhua.codemaker.service.template.FreemarkerService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Description: + * 新版本的应用模块代码写服务,屏蔽底层写文件的细节,通过app和module隔离api和底层实现 + * 做到一套api支持多种应用框架风格的代码生成。 + * date: 2021/6/22 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ + +@Component +public class WriteDynamicCodeService extends AbstractEleWriteService{ + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private FreemarkerService freemarkerService; + + @Autowired + private WriteDynamicDDDService writeDynamicDDDModuleService; + + @Autowired + private WriteCodeService writeCodeService; + + + @Autowired + private WriteApiDocService writeApiDocService; + + @Autowired + private WriteDomainPlantDocService writeDomainPlantDocService; + + @Autowired + private ComponentDecorateService componentDecorateService; + + @Autowired + private ConfigFactory configFactory; + + @Autowired + private ElementFactory elementFactory; + + + /** + * 写dynamicMapperxml文件 + * @param classBeanList + */ + public void writeDynamicMapperXml(List classBeanList) { + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.MAPPER_XML_DDD.getTempFileName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeDynamicMapperXml(classBeanList,writeFileService,null); + } + + /** + * 写AppExeImpl文件 + * @param classBeanList + */ + public void writeAppExeImpl(List classBeanList) { + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.CMD.getTempFileName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeAppExeImpl(classBeanList,writeFileService,null); + } + + /** + * 写AppExeInterface文件 + * @param interfaceBeanList + */ + public void writeAppExeInterface(List interfaceBeanList) { + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.EXE.getTempFileName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeAppExeInterface(interfaceBeanList,writeFileService,null); + } + + + /** + * 写feignDTO文件 + * @param classBeanList + */ + public void writeFeignDTO(List classBeanList) { + + IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(ModuleEnum.COLA_FEIGN_API.getModuleName()); + //只有springcloud cola需要写feign dto + if (writeFileService == null + || appServiceConfig.getApplicationType().equals(ModuleEnum.DUBBO_API.getAppName()) + || appServiceConfig.getApplicationType().equals(ModuleEnum.SPRING_BOOT_WEB.getAppName())) { + return; + } + writeDynamicDDDModuleService.writeClassEle(classBeanList,TemplateFileEnum.DTO_DDD,TemplateFileEnum.DTO_DDD,null); + } + + /** + * 一次性生成所有表的模块代码,同时解析plantUML的类图结合起来 + * @param allMetaDataMap + */ + public void writeAllWithDDD(Map allMetaDataMap){ + writeClassEle((List)allMetaDataMap.get("domainbo"),TemplateFileEnum.BUSINESS_OBJECT_DDD,TemplateFileEnum.BUSINESS_OBJECT_DDD,null); + writeClassEle((List)allMetaDataMap.get("domainvalueobject"),TemplateFileEnum.VALUE_OBJECT,TemplateFileEnum.VALUE_OBJECT,null); + writeEnumEle((List)allMetaDataMap.get("valueobjectenum"),null); + writeEnumEle((List)allMetaDataMap.get("apienum"),null); + writeClassEle((List)allMetaDataMap.get("domainmsg"),TemplateFileEnum.MESSAGE_BODY,TemplateFileEnum.BUSINESS_OBJECT_DDD,null); + writeClassEle((List)allMetaDataMap.get("domainevent"),TemplateFileEnum.EVENT_BODY,TemplateFileEnum.BUSINESS_OBJECT_DDD,null); + writeInterfaceEle((List)allMetaDataMap.get("gataway"),TemplateFileEnum.GATAWAY,TemplateFileEnum.GATAWAY,null); + writeInterfaceEle((List)allMetaDataMap.get("domainservice"),TemplateFileEnum.SERVICE_DDD,TemplateFileEnum.SERVICE_DDD,null); + writeInterfaceEle((List)allMetaDataMap.get("repository"),TemplateFileEnum.GATAWAY,TemplateFileEnum.REPOSITORY,null); + writeClassEle((List)allMetaDataMap.get("gatawayimpl"),TemplateFileEnum.GATAWAY_IMPL,TemplateFileEnum.GATAWAY_IMPL,null); + writeClassEle((List)allMetaDataMap.get("serviceimpl"),TemplateFileEnum.GATAWAY_IMPL,TemplateFileEnum.SERVICE_IMPL,null); + + writeClassEle((List)allMetaDataMap.get("repositoryimpl"),TemplateFileEnum.GATAWAY_IMPL,TemplateFileEnum.GATAWAY_IMPL,null); + + writeInterfaceEle((List)allMetaDataMap.get("infrastacl"),TemplateFileEnum.ACL,TemplateFileEnum.ACL,null); + writeClassEle((List)allMetaDataMap.get("infrastaclparam"),TemplateFileEnum.BUSINESS_OBJECT_DDD,TemplateFileEnum.ACL_PARAM,null); + writeClassEle((List)allMetaDataMap.get("infrastaclimpl"),TemplateFileEnum.ACL_IMPL,TemplateFileEnum.ACL_IMPL,null); + writeClassEle((List)allMetaDataMap.get("cmd"),TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.CMD,null); + + this.writeAppExeImpl((List)allMetaDataMap.get("exeClass")); + + writeInterfaceEle((List)allMetaDataMap.get("exeInterface"),TemplateFileEnum.GATAWAY,TemplateFileEnum.EXE,null); + writeClassEle((List)allMetaDataMap.get("domainfactory"),TemplateFileEnum.FACTORY, TemplateFileEnum.FACTORY,null); + writeClassEle((List)allMetaDataMap.get("applistener"),TemplateFileEnum.MQ_LISTENER, TemplateFileEnum.MQ_LISTENER,null); + writeClassEle((List)allMetaDataMap.get("mqproducer"),TemplateFileEnum.MQ_PRODUCER, TemplateFileEnum.MQ_PRODUCER,null); + writeClassEle((List)allMetaDataMap.get("mqconsumer"),TemplateFileEnum.MQ_CONSUMER, TemplateFileEnum.MQ_CONSUMER,null); + writeClassEle((List)allMetaDataMap.get("mqhandler"),TemplateFileEnum.MQ_HANDLER, TemplateFileEnum.MQ_HANDLER,null); + writeClassEle((List)allMetaDataMap.get("cache"),TemplateFileEnum.CACHE, TemplateFileEnum.CACHE,null); + writeClassEle((List)allMetaDataMap.get("adaptervo"),TemplateFileEnum.VO_DDD, TemplateFileEnum.VO_DDD,null); + writeClassEle((List)allMetaDataMap.get("controller"),TemplateFileEnum.CONTROLLER_DDD, TemplateFileEnum.CONTROLLER_DDD,null); + writeInterfaceEle((List)allMetaDataMap.get("derivefeign"),TemplateFileEnum.FEIGN_DDD,TemplateFileEnum.FEIGN,null); + writeInterfaceEle((List)allMetaDataMap.get("derivefacade"),TemplateFileEnum.FACADE_DDD,TemplateFileEnum.FACADE,null); + writeClassEle((List)allMetaDataMap.get("derivefacadeimpl"),TemplateFileEnum.FACADE_IMPL_DDD, TemplateFileEnum.FACADE_IMPL,null); + writeClassEle((List)allMetaDataMap.get("derivedto"),TemplateFileEnum.DTO_DDD, TemplateFileEnum.DTO_DDD,null); + + writeInterfaceEle((List)allMetaDataMap.get("dtoboconvert"),TemplateFileEnum.DTOBO_CONVERT,TemplateFileEnum.CONVERT,null); + writeInterfaceEle((List)allMetaDataMap.get("voboconvert"),TemplateFileEnum.VOBO_CONVERT,TemplateFileEnum.CONVERT,null); + writeInterfaceEle((List)allMetaDataMap.get("doboconvert"),TemplateFileEnum.DOBO_CONVERT,TemplateFileEnum.CONVERT,null); + writeInterfaceEle((List)allMetaDataMap.get("dynamicmapper"),TemplateFileEnum.MAPPER_DDD,TemplateFileEnum.MAPPER_DDD,null); + + List dynamicMapperXmlBeanList = (List)allMetaDataMap.get("dynamicmapperxml"); + this.writeDynamicMapperXml(dynamicMapperXmlBeanList); + + Map tableBeanMap = (Map)allMetaDataMap.get("table"); + Map> columnBeanListMap = (Map>)allMetaDataMap.get("columns"); + Map varMap = new HashMap<>(); + + this.writeFeignDTO((List)allMetaDataMap.get("derivedto")); + writeInterfaceEle((List)allMetaDataMap.get("convertdto2dto"),TemplateFileEnum.DOBO_CONVERT,TemplateFileEnum.CONVERT,null); + + varMap.put("projectBean",allMetaDataMap.get("projectBean")); + tableBeanMap.forEach((k,v)->{ + varMap.put("table", v); + varMap.put("columns", columnBeanListMap.get(k)); + varMap.put("package", allMetaDataMap.get("package")); + varMap.put("author", allMetaDataMap.get("author")); + varMap.put("packageInfrast", allMetaDataMap.get("packageInfrast")); + varMap.put("packageDomain", allMetaDataMap.get("packageDomain")); + + String templateContent = freemarkerService.parseTpl(TemplateFileEnum.DATA_OBJECT.getTempFileName(),varMap); + writeCodeService.writeDO(templateContent,v.getHumpClassName()+"DO"); + }); + + + List facadeInterfaceBeanList = (List)allMetaDataMap.get("derivefacade"); + if(CollectionUtils.isNotEmpty(facadeInterfaceBeanList)){ + for (InterfaceBean interfaceBean : facadeInterfaceBeanList){ + varMap.put("package", allMetaDataMap.get("package")); + varMap.put("author", allMetaDataMap.get("author")); + varMap.put("packageInfrast", allMetaDataMap.get("packageInfrast")); + varMap.put("packageDomain", allMetaDataMap.get("packageDomain")); + varMap.putAll(interfaceBean.buildVarMap()); + String templateContent = freemarkerService.parseTpl(TemplateFileEnum.TEST_DDD.getTempFileName(),varMap); + writeCodeService.writeTest(templateContent,interfaceBean.getClassName()); + } + } + + //处理自定义的代码模板 + for (Map.Entry entry : allMetaDataMap.entrySet()){ + String key = entry.getKey(); + if(!key.contains(":")){ + continue; + } + FtlBean ftlBean = FtlBean.getInstance(key); + if(ClassEnum.isClass(ftlBean.getClassType())){ + List classBeanList = (List)entry.getValue(); + writeClassBean(classBeanList,ftlBean); + } + if(ClassEnum.isInterface(ftlBean.getClassType())){ + List interfaceBeanList = (List)entry.getValue(); + writeInterfaceBean(interfaceBeanList,ftlBean); + } + if(ClassEnum.isEnum(ftlBean.getClassType())){ + List enumBeanList = (List)entry.getValue(); + } + + if(ClassEnum.isPom(ftlBean.getClassType())){ + List pomBeanList = (List)entry.getValue(); + writePom(pomBeanList,ftlBean); + } + } + + //写公共服务类 + this.writeCommon(varMap,""); + //写项目配置文件 + this.writeConfig(varMap); + //渲染e-r图 + writeCodeService.writeERPicture(tableBeanMap,columnBeanListMap); + + //进行文档生成 + if(appServiceConfig.getApiDocGenerator()){ + this.writeHttpApiDoc((List)allMetaDataMap.get("controller"),(List)allMetaDataMap.get("adaptervo")); + this.writeRpcApiDoc((List)allMetaDataMap.get("derivefacade"),(List)allMetaDataMap.get("derivedto")); + this.writeRpcApiDoc((List)allMetaDataMap.get("derivefeign"),(List)allMetaDataMap.get("derivedto")); + } + + //进行plantuml文档同步 + if(appServiceConfig.getPlantUMLSync()){ + writeDomainPlantDocService.writePlantUMLDomainDoc(); + List dynamicInvokeFileList = (List)allMetaDataMap.get("dynamicInvokeFileList"); + writeDomainPlantDocService.writePlantUMLSequenceDoc(dynamicInvokeFileList); + } + + this.writeSqlDoc((List)allMetaDataMap.get("sql")); + } + + + + /** + * 写http接口文档 + * @param controllerBeanList + */ + private void writeHttpApiDoc(List controllerBeanList,List voBeanList){ + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_HTTP.getTempFileName()); + if (writeFileService == null) { + return; + } + writeApiDocService.writeHttpApiDoc(controllerBeanList,writeFileService,voBeanList); + } + + /** + * 写rpc接口文档 + * @param facadeBeanList + * @param dtoBeanList + */ + private void writeRpcApiDoc(List facadeBeanList,List dtoBeanList){ + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_RPC.getTempFileName()); + if (writeFileService == null) { + return; + } + writeApiDocService.writeRpcApiDoc(facadeBeanList,writeFileService,dtoBeanList); + } + + + /** + * 写sql文档 + * @param sqlContentList + */ + private void writeSqlDoc(List sqlContentList){ + IWriteFileService writeFileService = appServiceConfig.getModuleWriteService(TemplateFileEnum.API_RPC.getTempFileName()); + if (writeFileService == null) { + return; + } + writeApiDocService.writeSqlDoc(sqlContentList,writeFileService); + } + + /** + * 写公共基础服务类 + * + * @param varMap + */ + public void writeCommon(Map varMap, String fast) { + + Map> initClassMap = appServiceConfig.getInitClassMapList(); + if(initClassMap == null || initClassMap.isEmpty()){ + return; + } + + for (Map.Entry> entry : initClassMap.entrySet()){ + for (String classTemplate : entry.getValue()){ + String clazzContent = freemarkerService.parseTplCommon(classTemplate, varMap); + writeCodeService.writeInitClass(entry.getKey(),clazzContent,classTemplate); + } + } + } + + /** + * 写配置文件 + * + * @param varMap + */ + public void writeConfig(Map varMap) { + + List configFileBeanList = appServiceConfig.getConfigFileBeanList(); + if(CollectionUtils.isEmpty(configFileBeanList)){ + return; + } + ProjectBean projectBean = (ProjectBean)varMap.get("projectBean"); + for (ConfigFileBean configFileBean : configFileBeanList){ + ComponentConfigBean componentConfigBean = projectBean.getConfigFileMap().get(configFileBean.getConfigFileName()); + //非组件配置 + if(componentConfigBean == null){ + String configContent = freemarkerService.parseTplConfig(configFileBean.getTemplateName(), varMap); + writeCodeService.writeConfig(configFileBean.getModuleName(),configContent,configFileBean.getConfigFileName()+"."+configFileBean.getConfigFileSuffix()); + continue; + } + else if(componentConfigBean != null && CollectionUtils.isNotEmpty(componentConfigBean.getConfigList()) && configFileBean.getConfigFileName().equals("application")){ + varMap.put("configFileList", componentConfigBean.getConfigList()); + String configContent = freemarkerService.parseTplConfig(configFileBean.getTemplateName(), varMap); + writeCodeService.writeConfig(configFileBean.getModuleName(),configContent,configFileBean.getConfigFileName()+"."+configFileBean.getConfigFileSuffix()); + }else { + String configContent = StringUtils.join(componentConfigBean.getConfigList(),"\n"); + writeCodeService.writeConfig(configFileBean.getModuleName(),configContent,configFileBean.getConfigFileName()+"."+configFileBean.getConfigFileSuffix()); + } + } + + + } + + /** + * 写dynamicddd模块代码生成 + * + * @param dynamicDDDMap + */ + public void writeDynamicDDD(Map dynamicDDDMap) { + IWriteFileService writeFileService = appServiceConfig.getDynamicDDDWriteService(); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeDynamicDDD(dynamicDDDMap, writeFileService); + } + + + /** + * 写classBean + * @param classBeanList + * @param ftlBean + */ + public void writeClassBean(List classBeanList, FtlBean ftlBean){ + IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(ftlBean.getModuleName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeClassBean(classBeanList,writeFileService,null,ftlBean.getCodeTempFileName()); + } + + /** + * 写interfaceBean + * @param interfaceBeanList + * @param ftlBean + */ + public void writeInterfaceBean(List interfaceBeanList, FtlBean ftlBean){ + IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(ftlBean.getModuleName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writeInterfaceBean(interfaceBeanList,writeFileService,ftlBean.getCodeTempFileName()); + } + + + /** + * 写pomBean + * @param pomBeanList + * @param ftlBean + */ + public void writePom(List pomBeanList, FtlBean ftlBean){ + if(CollectionUtils.isEmpty(pomBeanList)){ + return; + } + IWriteFileService writeFileService = appServiceConfig.getWriteServiceByModuleName(ftlBean.getModuleName()); + if (writeFileService == null) { + return; + } + writeDynamicDDDModuleService.writePomBean(pomBeanList,writeFileService,ftlBean.getCodeTempFileName()); + } + + + /** + * 纯数据库模式下写一些配置类文件 + */ + public void writeConfigForDBModel(Map varMap){ + PlantUmlContextBean plantUmlContextBean = new PlantUmlContextBean(); + plantUmlContextBean.setDerivedPlantUmlContextBean(new PlantUmlContextBean()); + plantUmlContextBean.setAppName(appServiceConfig.getApplicationName()); + plantUmlContextBean.setApplicationType(appServiceConfig.getApplicationType()); + Map pomBeanMap = appServiceConfig.getPomConfigMap(); + + pomBeanMap.forEach((k,v)-> plantUmlContextBean.addPomBean(v)); + componentDecorateService.decorateComponent(plantUmlContextBean); + elementFactory.dealPomDependency(plantUmlContextBean); + + Map customElementMap = elementFactory.getElementMap(plantUmlContextBean); + + Map> pomBeanListMap = new HashMap<>(); + if(!customElementMap.isEmpty()){ + List ftlBeanList = appServiceConfig.getCustomCodeFtlList(); + Map ftlBeanMap = ftlBeanList.stream().collect(Collectors.toMap(FtlBean::getFtlStr, o->o)); + for (Map.Entry entry : customElementMap.entrySet()){ + FtlBean ftlBean = ftlBeanMap.get(entry.getKey()); + if(ClassEnum.isPom(ftlBean.getClassType())){ + pomBeanListMap.put(ftlBean.getFtlStr(),entry.getValue().getPomBeanList()); + } + } + } + + + for (Map.Entry> entry : pomBeanListMap.entrySet()){ + FtlBean ftlBean = FtlBean.getInstance(entry.getKey()); + if(ClassEnum.isPom(ftlBean.getClassType())){ + List pomBeanList = entry.getValue(); + writePom(pomBeanList,ftlBean); + } + } + + + //进行框架中间件和组件的包装和注册 + componentDecorateService.decorateComponent(plantUmlContextBean); + ProjectBean projectBean = configFactory.getProjectBean(plantUmlContextBean); + varMap.put("projectBean",projectBean); + this.writeConfig(varMap); + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicDDDService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicDDDService.java new file mode 100644 index 0000000..257bbae --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/WriteDynamicDDDService.java @@ -0,0 +1,210 @@ +package com.tianhua.codemaker.service; + +import com.tianhua.codemaker.app.IWriteFileService; +import com.tianhua.codemaker.bean.WriteContentBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.EnumBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.template.FreemarkerService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * Description: + * date: 2021/6/30 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class WriteDynamicDDDService extends AbstractEleWriteService{ + @Autowired + private FreemarkerService freemarkerService; + + /** + * 写dynamicddd模块代码生成 + * @param dynamicDDDMap + */ + public void writeDynamicDDD(Map dynamicDDDMap, IWriteFileService writeFileService){ + writeClassEle((List)dynamicDDDMap.get("domainbo"), TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.BUSINESS_OBJECT_DDD, writeFileService); + writeClassEle((List)dynamicDDDMap.get("domainvalueobject"), TemplateFileEnum.VALUE_OBJECT, TemplateFileEnum.VALUE_OBJECT, writeFileService); + + //写接口 + List repositoryInterfaceBeanList = (List)dynamicDDDMap.get("repository"); + List gatawayInterfaceBeanList = (List)dynamicDDDMap.get("gataway"); + repositoryInterfaceBeanList.addAll(gatawayInterfaceBeanList); + writeInterfaceAndImpl(repositoryInterfaceBeanList,writeFileService,"ddd"); + + writeEnumEle((List)dynamicDDDMap.get("valueobjectenum"), writeFileService); + writeClassEle((List)dynamicDDDMap.get("domainmsg"), TemplateFileEnum.MESSAGE_BODY, TemplateFileEnum.MESSAGE_BODY, writeFileService); + writeClassEle((List)dynamicDDDMap.get("domainevent"), TemplateFileEnum.EVENT_BODY, TemplateFileEnum.EVENT_BODY, writeFileService); + writeClassEle( (List)dynamicDDDMap.get("domainfactory"), TemplateFileEnum.FACTORY, TemplateFileEnum.FACTORY, writeFileService); + writeInterfaceEle((List)dynamicDDDMap.get("infrastacl"), TemplateFileEnum.ACL, TemplateFileEnum.ACL, writeFileService); + + writeClassEle((List)dynamicDDDMap.get("infrastaclimpl"), TemplateFileEnum.ACL_IMPL, TemplateFileEnum.ACL_IMPL, writeFileService); + + writeClassEle((List)dynamicDDDMap.get("infrastaclparam"), TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.ACL_PARAM, writeFileService); + writeClassEle((List)dynamicDDDMap.get("cmd"), TemplateFileEnum.BUSINESS_OBJECT_DDD, TemplateFileEnum.CMD, writeFileService); + writeInterfaceEle((List)dynamicDDDMap.get("exeInterface"), TemplateFileEnum.GATAWAY, TemplateFileEnum.EXE, writeFileService); + writeAppExeImpl((List)dynamicDDDMap.get("exeClass"),writeFileService,"ddd"); + } + + /** + * 写接口和实现 + * @param repositoryInterfaceBeanList + * @param writeFileService + */ + private void writeInterfaceAndImpl(List repositoryInterfaceBeanList, IWriteFileService writeFileService,String dddTag){ + for (InterfaceBean interfaceBean : repositoryInterfaceBeanList){ + Map varMap = interfaceBean.buildVarMap(); + String interfaceContent; + if (StringUtils.isNotEmpty(dddTag)){ + interfaceContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); + }else { + interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); + } + WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.GATAWAY); + writeFileService.writeContent(writeContentBean); + + //写接口实现 + String interfaceImplContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY_IMPL.getTempFileName(), varMap); + WriteContentBean writeContentBean2 = interfaceBean.buildWriteContentBean(interfaceImplContent,TemplateFileEnum.GATAWAY_IMPL); + writeFileService.writeContent(writeContentBean2); + } + } + + + + + /** + * 写dynamicmapperxml + * @param dynamicMapperXmlBeanList + * @param writeFileService + */ + public void writeDynamicMapperXml(List dynamicMapperXmlBeanList, IWriteFileService writeFileService,String dddTag) { + for (ClassBean classBean : dynamicMapperXmlBeanList) { + Map varMap = classBean.buildVarMap(); + if(CollectionUtils.isNotEmpty(classBean.getImportClassList())){ + Optional doPackageName = classBean.getImportClassList().stream().filter(importClassName -> importClassName.toLowerCase().endsWith(TemplateFileEnum.DATA_OBJECT.getTempFileName())).findFirst(); + if(doPackageName.isPresent()){ + varMap.put("doPackageName",doPackageName.get()); + } + } + + String interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.MAPPER_XML_DDD.getTempFileName(), varMap); + WriteContentBean writeContentBean = classBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.MAPPER_XML_DDD); + writeFileService.writeContent(writeContentBean); + } + } + /** + * 写app.exe--->class 接口实现 + * @param classBeanList + * @param writeFileService + */ + public void writeAppExeImpl(List classBeanList, IWriteFileService writeFileService,String dddTag){ + for (ClassBean classBean : classBeanList){ + Map varMap = classBean.buildVarMap(); + String boContent; + if(StringUtils.isNotEmpty(dddTag)){ + boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.EXE_IMPL.getTempFileName(), varMap); + if(StringUtils.isEmpty(classBean.getRelationClassStr())){ + boContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), varMap); + } + }else { + boContent = freemarkerService.parseTpl(TemplateFileEnum.EXE_IMPL.getTempFileName(), varMap); + if(StringUtils.isEmpty(classBean.getRelationClassStr())){ + boContent = freemarkerService.parseTpl(TemplateFileEnum.EXE_ABSTRACT.getTempFileName(), varMap); + } + } + WriteContentBean writeContentBean = classBean.buildWriteContentBean(boContent,TemplateFileEnum.EXE); + writeFileService.writeContent(writeContentBean); + } + } + + /** + * 写app.exe--->interface 接口 + * @param interfaceBeanList + * @param writeFileService + */ + public void writeAppExeInterface(List interfaceBeanList, IWriteFileService writeFileService,String dddTag){ + for (InterfaceBean interfaceBean : interfaceBeanList){ + Map varMap = interfaceBean.buildVarMap(); + //借用gataway的模板 + String interfaceContent; + if(StringUtils.isNotEmpty(dddTag)){ + interfaceContent = freemarkerService.parseTplDynamicDDD(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); + }else { + interfaceContent = freemarkerService.parseTpl(TemplateFileEnum.GATAWAY.getTempFileName(), varMap); + } + WriteContentBean writeContentBean = interfaceBean.buildWriteContentBean(interfaceContent,TemplateFileEnum.EXE); + writeFileService.writeContent(writeContentBean); + } + } + + /** + * 写interface + * @param interfaceBeanList + * @param writeFileService + */ + public void writeInterfaceBean(List interfaceBeanList, IWriteFileService writeFileService,String templateFileCode){ + for (InterfaceBean interfaceBean : interfaceBeanList){ + Map varMap = interfaceBean.buildVarMap(); + String interfaceContent = freemarkerService.parseTpl(templateFileCode, varMap); + WriteContentBean writeContentBean = interfaceBean.buildWriteContentBeanV2(interfaceContent,templateFileCode,true); + writeFileService.writeContent(writeContentBean); + } + } + + + /** + * 写interface + * @param pomBeanList + * @param writeFileService + */ + public void writePomBean(List pomBeanList, IWriteFileService writeFileService, String templateFileCode){ + if(CollectionUtils.isEmpty(pomBeanList)){ + return; + } + for (PomBean pomBean : pomBeanList){ + if(pomBean == null){ + continue; + } + Map varMap = pomBean.buildVarMap(); + String interfaceContent = freemarkerService.parseTpl(templateFileCode, varMap); + WriteContentBean writeContentBean = pomBean.buildWriteContentBean(interfaceContent,templateFileCode); + writeFileService.writeContent(writeContentBean); + } + } + + /** + * 写classBean + * @param classBeanList + * @param writeFileService + */ + public void writeClassBean(List classBeanList, IWriteFileService writeFileService,String dddTag, String templateFileCode){ + if(CollectionUtils.isEmpty(classBeanList)){ + return; + } + for (ClassBean classBean : classBeanList){ + Map varMap = classBean.buildVarMap(); + String boContent; + if(StringUtils.isNotEmpty(dddTag)){ + boContent = freemarkerService.parseTplDynamicDDD(templateFileCode, varMap); + }else { + boContent = freemarkerService.parseTpl(templateFileCode, varMap); + } + WriteContentBean writeContentBean = classBean.buildWriteContentBeanV2(boContent,templateFileCode,true); + writeFileService.writeContent(writeContentBean); + } + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/IClazzAdapter.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/IClazzAdapter.java similarity index 85% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/IClazzAdapter.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/IClazzAdapter.java index 3905637..ed1ccdd 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/IClazzAdapter.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/IClazzAdapter.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.adapter; +package com.tianhua.codemaker.service.adapter; import java.util.Map; @@ -7,7 +7,7 @@ import java.util.Map; * 解除对coderman-utils工具包的强依赖关系 * date: 2021/10/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/JavsAdapterBeanFactory.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/JavsAdapterBeanFactory.java new file mode 100644 index 0000000..b0b68cc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/JavsAdapterBeanFactory.java @@ -0,0 +1,26 @@ +package com.tianhua.codemaker.service.adapter; + +import com.tianhua.codemaker.api.IJavsAdapterSerivce; +import com.tianhua.codemaker.utils.SpringContextHolder; +import org.springframework.stereotype.Service; + +/** + * Description: + * date: 2022/4/1 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class JavsAdapterBeanFactory { + /** + * 获取javs适配实现 + * @return + */ + public IJavsAdapterSerivce getJavsAdapterService(){ + return (IJavsAdapterSerivce)SpringContextHolder.getBean("javsAdapterService"); + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/PackgeConstants.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/PackgeConstants.java similarity index 92% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/PackgeConstants.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/PackgeConstants.java index 6d4efea..058de9c 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/adapter/PackgeConstants.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/adapter/PackgeConstants.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.adapter; +package com.tianhua.codemaker.service.adapter; import java.util.HashMap; @@ -8,7 +8,7 @@ import java.util.Map; * Description: * date: 2021/10/26 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/component/ComponentDecorateService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/component/ComponentDecorateService.java similarity index 79% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/component/ComponentDecorateService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/component/ComponentDecorateService.java index c91f1db..adb43f6 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/component/ComponentDecorateService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/component/ComponentDecorateService.java @@ -1,11 +1,10 @@ -package com.coderman.codemaker.service.component; +package com.tianhua.codemaker.service.component; -import com.alibaba.fastjson.JSON; -import com.coderman.codemaker.api.ICompScanService; -import com.coderman.codemaker.api.ICompDecorateService; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.api.ICompScanService; +import com.tianhua.codemaker.api.ICompDecorateService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,7 +17,7 @@ import java.util.Map; * Description: * date: 2021/11/23 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -62,7 +61,7 @@ public class ComponentDecorateService { } //这里只注册应用级组件,框架级组件等有需求再注册 - plantUmlContextBean.setCompContextBeanMap(customCompContextBeanMap); - log.info("===========comp.size = "+customCompContextBeanMap.size()); + plantUmlContextBean.addCompContextBeanBatch(customCompContextBeanMap); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureService.java similarity index 89% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureService.java index ed7ea44..de50fec 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureService.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.dberpicture; +package com.tianhua.codemaker.service.dberpicture; import com.coderman.codemaker.dbergenerate.bean.TableBean; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureServiceImpl.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureServiceImpl.java similarity index 93% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureServiceImpl.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureServiceImpl.java index 6ab3f48..c6ea21f 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dberpicture/DBErPictureServiceImpl.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dberpicture/DBErPictureServiceImpl.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.dberpicture; +package com.tianhua.codemaker.service.dberpicture; import com.coderman.codemaker.dbergenerate.bean.TableBean; import com.coderman.codemaker.dbergenerate.service.ErPictureService; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dsl/DSLService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dsl/DSLService.java similarity index 76% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dsl/DSLService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dsl/DSLService.java index 5ea9e51..243209a 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/dsl/DSLService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/dsl/DSLService.java @@ -1,7 +1,7 @@ -package com.coderman.codemaker.service.dsl; +package com.tianhua.codemaker.service.dsl; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; * 归类读写场景 * date: 2021/11/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ConvertInvokeService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ConvertInvokeService.java similarity index 97% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ConvertInvokeService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ConvertInvokeService.java index afadf4c..cd93782 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ConvertInvokeService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ConvertInvokeService.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.service.invoker; - -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.utils.StringHandleUtils; +package com.tianhua.codemaker.service.invoker; + +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -18,7 +18,7 @@ import java.util.concurrent.atomic.AtomicReference; * Description:bo,vo,dto之间的转换调用处理器 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeElementRegistService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeElementRegistService.java new file mode 100644 index 0000000..dbc207a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeElementRegistService.java @@ -0,0 +1,56 @@ +package com.tianhua.codemaker.service.invoker; + +import com.tianhua.codemaker.api.ICompRegistService; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.DefaultPackageConfig; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * Description:预先读取plantUML调用时序图文档,以及补充其他内置的工具类 + * 如BaseEvent,AppEventPublisher类等 + * date: 2021/10/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@Service +public class InvokeElementRegistService { + + @Autowired + private DefaultPackageConfig defaultPackageConfig; + + @Autowired + private AppServiceConfig appServiceConfig; + + @Autowired + private ICompRegistService iCompRegistService; + + /** + * 注册独立类和工具 + * @param plantUmlContextBean + */ + public void registDefaultClass(PlantUmlContextBean plantUmlContextBean){ + ComponentContextBean componentContextBean = iCompRegistService.registSingleClass(); + + if(CollectionUtils.isNotEmpty(componentContextBean.getClassBeanList())){ + componentContextBean.getClassBeanList().forEach(classBean -> { + String packageName = classBean.getPackageName().replace("${package}",appServiceConfig.getPackage())+"."+classBean.getClassName(); + defaultPackageConfig.addPackage(classBean.getClassName(),packageName); + }); + } + + if(CollectionUtils.isNotEmpty(componentContextBean.getInterfaceBeanList())){ + componentContextBean.getInterfaceBeanList().forEach(interfaceBean -> { + String packageName = interfaceBean.getPackageName().replace("${package}",appServiceConfig.getPackage())+"."+interfaceBean.getClassName(); + defaultPackageConfig.addPackage(interfaceBean.getClassName(),packageName); + }); + } + plantUmlContextBean.addCompContextBean("singleClass",componentContextBean); + } + +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeHandler.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeHandler.java index 33825f3..a381224 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeHandler.java @@ -1,13 +1,13 @@ -package com.coderman.codemaker.service.invoker; +package com.tianhua.codemaker.service.invoker; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; /** * Description: 动态方法调用绘制处理器入口 * 主要处理convert和上下文等之间的代码生成关系分析等 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeSequenceService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeSequenceService.java similarity index 79% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeSequenceService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeSequenceService.java index d9c673c..6a67e50 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/InvokeSequenceService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/InvokeSequenceService.java @@ -1,7 +1,7 @@ -package com.coderman.codemaker.service.invoker; +package com.tianhua.codemaker.service.invoker; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.service.plantuml.ReadInvokeSequencePlantDocService; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.service.plantuml.ReadInvokeSequencePlantDocService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; * Description: * date: 2021/10/19 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodFactoryService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodFactoryService.java similarity index 96% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodFactoryService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodFactoryService.java index a54a378..395c6a6 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodFactoryService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodFactoryService.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.invoker; +package com.tianhua.codemaker.service.invoker; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.utils.StringHandleUtils; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.assertj.core.util.Lists; @@ -16,7 +16,7 @@ import java.util.Optional; * Description: 针对动态调用时序中出现而领域文档没有出现的方法进行智能识别和构建 * date: 2021/10/30 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -33,7 +33,6 @@ public class MethodFactoryService { public MethodBean buildDynamicMethod(PlantUmlContextBean plantUmlContextBean, AbstractClassBean abstractClassBean, String methodStr) { Optional methodBeanOptional = abstractClassBean.getMatchMethodBean(methodStr); if (methodBeanOptional.isPresent()) { - methodBeanOptional.get().initInvokeRowContentList(); return methodBeanOptional.get(); } //如果是引用的组件则不进行智能推导 @@ -56,7 +55,6 @@ public class MethodFactoryService { methodBean.setReturnClass("void"); methodBean.setVisibility("public"); - methodBean.initInvokeRowContentList(); String returnClassTypeName = "void"; String wrType = ReadWriteTypeEnum.getCodeByMethod(methodStr.trim()); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodInvokeService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodInvokeService.java similarity index 94% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodInvokeService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodInvokeService.java index d051a9d..a836cda 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/MethodInvokeService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/MethodInvokeService.java @@ -1,15 +1,15 @@ -package com.coderman.codemaker.service.invoker; - -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.VisibilityEnum; -import com.coderman.codemaker.enums.dynamic.InvokeLayerTypeEnum; -import com.coderman.codemaker.enums.dynamic.InvokeSceneTypeEnum; -import com.coderman.codemaker.service.ImportPackageService; -import com.coderman.codemaker.utils.StringHandleUtils; +package com.tianhua.codemaker.service.invoker; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.VisibilityEnum; +import com.tianhua.codemaker.enums.dynamic.InvokeLayerTypeEnum; +import com.tianhua.codemaker.enums.dynamic.InvokeSceneTypeEnum; +import com.tianhua.codemaker.service.packageimport.ImportPackageServiceImpl; +import com.tianhua.codemaker.utils.StringHandleUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.assertj.core.util.Lists; @@ -25,7 +25,7 @@ import java.util.Optional; * Description: * date: 2021/10/16 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -50,7 +50,7 @@ public class MethodInvokeService { @Autowired - private ImportPackageService importPackageService; + private ImportPackageServiceImpl importPackageService; @Autowired private ConvertInvokeService convertInvokeService; @@ -307,10 +307,6 @@ public class MethodInvokeService { return; } - if(CollectionUtils.isEmpty(invokerClassBean.getDynamicImportPackageList())){ - invokerClassBean.setDynamicImportPackageList(Lists.newArrayList()); - } - importClassName = importClassName.trim(); if(importClassName.contains("<")){ String [] arr = importClassName.split("<"); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ProviderInvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ProviderInvokeHandler.java similarity index 71% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ProviderInvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ProviderInvokeHandler.java index 90f80cd..41c2c15 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ProviderInvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ProviderInvokeHandler.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.service.invoker; +package com.tianhua.codemaker.service.invoker; import org.springframework.stereotype.Service; @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; * Description: * date: 2021/10/16 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ReturnBodyFactoryService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ReturnBodyFactoryService.java similarity index 90% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ReturnBodyFactoryService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ReturnBodyFactoryService.java index d6c4abf..ef4e1d8 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/ReturnBodyFactoryService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/ReturnBodyFactoryService.java @@ -1,8 +1,8 @@ -package com.coderman.codemaker.service.invoker; +package com.tianhua.codemaker.service.invoker; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -12,7 +12,7 @@ import java.util.List; * Description:根据方法调用内容动态智能构建方法返回值 * date: 2021/11/1 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppHttpInvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppHttpInvokeHandler.java similarity index 84% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppHttpInvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppHttpInvokeHandler.java index 0e57132..12c50fa 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppHttpInvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppHttpInvokeHandler.java @@ -1,25 +1,23 @@ -package com.coderman.codemaker.service.invoker.handler; +package com.tianhua.codemaker.service.invoker.handler; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.service.invoker.ConvertInvokeService; -import com.coderman.codemaker.service.invoker.InvokeHandler; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.service.invoker.ConvertInvokeService; +import com.tianhua.codemaker.service.invoker.InvokeHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import java.util.ArrayList; import java.util.Optional; /** * Description: 应用层app_http调用方 方法绘制处理器 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -58,10 +56,6 @@ public class AppHttpInvokeHandler implements InvokeHandler { String currentInvokeRowContent = invokeBean.getCurrentInvokeRowBean().refreshInvokeContent(convertInvokeRowBean, invokeBean.getPlantUmlContextBean()); invokeBean.getInvokerMethodBean().addInvokeRowContent(currentInvokeRowContent,invokeBean.getCurrentInvokeRowBean()); - //需要引用convert接口的时候注册引用包 - if(CollectionUtils.isEmpty(invokeBean.getInvokerClassBean().getDynamicImportPackageList())){ - invokeBean.getInvokerClassBean().setDynamicImportPackageList(new ArrayList<>()); - } ClassBean returnClassBean = invokeBean.getPlantUmlContextBean().getClassBeanMap().get(convertMethod.getReturnClass()); if(returnClassBean == null){ returnClassBean = invokeBean.getPlantUmlContextBean().getDerivedPlantUmlContextBean().getClassBeanMap().get(convertMethod.getReturnClass()); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppRpcInvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppRpcInvokeHandler.java similarity index 90% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppRpcInvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppRpcInvokeHandler.java index 6a54cba..19e1f46 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/AppRpcInvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/AppRpcInvokeHandler.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.service.invoker.handler; +package com.tianhua.codemaker.service.invoker.handler; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.service.invoker.ConvertInvokeService; -import com.coderman.codemaker.service.invoker.InvokeHandler; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.service.invoker.ConvertInvokeService; +import com.tianhua.codemaker.service.invoker.InvokeHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,7 +16,7 @@ import java.util.Optional; * Description:应用层app_rpc调用方 方法绘制处理器 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DomainInvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DomainInvokeHandler.java similarity index 90% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DomainInvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DomainInvokeHandler.java index 123d28c..af63db7 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/DomainInvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/DomainInvokeHandler.java @@ -1,14 +1,14 @@ -package com.coderman.codemaker.service.invoker.handler; - -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.enums.dynamic.InvokeSceneTypeEnum; -import com.coderman.codemaker.enums.dynamic.ReadWriteTypeEnum; -import com.coderman.codemaker.service.invoker.ConvertInvokeService; -import com.coderman.codemaker.service.invoker.InvokeHandler; +package com.tianhua.codemaker.service.invoker.handler; + +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.enums.dynamic.InvokeSceneTypeEnum; +import com.tianhua.codemaker.enums.dynamic.ReadWriteTypeEnum; +import com.tianhua.codemaker.service.invoker.ConvertInvokeService; +import com.tianhua.codemaker.service.invoker.InvokeHandler; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,7 +19,7 @@ import java.util.Optional; * Description:领域层调用方 方法绘制处理器 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/InfrastInvokeHandler.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/InfrastInvokeHandler.java similarity index 91% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/InfrastInvokeHandler.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/InfrastInvokeHandler.java index 49d8ab2..7a010ad 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/invoker/handler/InfrastInvokeHandler.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/invoker/handler/InfrastInvokeHandler.java @@ -1,28 +1,25 @@ -package com.coderman.codemaker.service.invoker.handler; - -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.invoke.InvokeRowBean; -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.MethodBean; -import com.coderman.codemaker.enums.dynamic.InvokeSceneTypeEnum; -import com.coderman.codemaker.service.invoker.ConvertInvokeService; -import com.coderman.codemaker.service.invoker.InvokeHandler; -import com.coderman.codemaker.service.invoker.MethodInvokeService; +package com.tianhua.codemaker.service.invoker.handler; + +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeRowBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.MethodBean; +import com.tianhua.codemaker.enums.dynamic.InvokeSceneTypeEnum; +import com.tianhua.codemaker.service.invoker.ConvertInvokeService; +import com.tianhua.codemaker.service.invoker.InvokeHandler; +import com.tianhua.codemaker.service.invoker.MethodInvokeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.support.AbstractApplicationContext; import org.springframework.stereotype.Service; -import java.lang.reflect.Method; import java.util.ArrayList; /** * Description:基础设施层infrast调用方 方法绘制处理器 * date: 2021/10/21 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/ImportPackageService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/ImportPackageServiceImpl.java similarity index 96% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/ImportPackageService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/ImportPackageServiceImpl.java index 3d306fb..6fbea1c 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/ImportPackageService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/ImportPackageServiceImpl.java @@ -1,13 +1,14 @@ -package com.coderman.codemaker.service; - -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.plantuml.AbstractClassBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.DefaultPackageConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; +package com.tianhua.codemaker.service.packageimport; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.plantuml.AbstractClassBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.DefaultPackageConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.ImportPackageService; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -21,12 +22,13 @@ import java.util.Set; * Description: * date: 2021/6/30 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @Service -public class ImportPackageService { +public class ImportPackageServiceImpl implements ImportPackageService { + @Autowired private DefaultPackageConfig defaultPackageConfig; @@ -96,7 +98,7 @@ public class ImportPackageService { }); plantUmlContextBean.getEnumBeanMap().forEach((k,v)->{ - if(k.toLowerCase().equals(returnClassName.toLowerCase())){ + if(k.equals(returnClassName.toLowerCase())){ importClassSet.add(v.getPackageName()+"."+v.getClassName()); } if(methodBean.getMethodName().toLowerCase().contains(k.toLowerCase())){ diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/packageimport/PackageImportService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/PackageImportService.java similarity index 81% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/packageimport/PackageImportService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/PackageImportService.java index 9393aa3..259cf0e 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/packageimport/PackageImportService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/packageimport/PackageImportService.java @@ -1,10 +1,10 @@ -package com.coderman.codemaker.service.packageimport; +package com.tianhua.codemaker.service.packageimport; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.component.CompPropReadService; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.component.CompPropReadService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import java.io.IOException; import java.util.HashMap; @@ -15,11 +15,11 @@ import java.util.Properties; * Description: * date: 2021/11/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ -@Service +@Component("componentPackageImportService") @Slf4j public class PackageImportService { diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadDomainPlantDocService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadDomainPlantDocService.java similarity index 89% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadDomainPlantDocService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadDomainPlantDocService.java index 6038dd9..6f0546e 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadDomainPlantDocService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadDomainPlantDocService.java @@ -1,12 +1,12 @@ -package com.coderman.codemaker.service.plantuml; - -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.ClassEnum; -import com.coderman.codemaker.enums.ClassRelationEnum; -import com.coderman.codemaker.enums.VisibilityEnum; -import com.coderman.codemaker.utils.StringHandleUtils; +package com.tianhua.codemaker.service.plantuml; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.ClassEnum; +import com.tianhua.codemaker.enums.ClassRelationEnum; +import com.tianhua.codemaker.enums.VisibilityEnum; +import com.tianhua.codemaker.utils.StringHandleUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -20,7 +20,7 @@ import java.util.*; * 读取plantUML类图 * date: 2021/6/28 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * @@ -197,6 +197,19 @@ public class ReadDomainPlantDocService { classBean.setClassDesc(classBean.getClassName()); classBean.setClassName(className); } + + if(classBean.getClassName().contains("@")){ + List annoTagList = new ArrayList<>(); + String [] annoArr = classBean.getClassName().split("\\."); + for (String annoTag : annoArr){ + if(annoTag.contains("@")){ + annoTagList.add(annoTag); + } + } + classBean.setClassName(annoArr[0]); + classBean.setAnnotationTagList(annoTagList); + } + methodBeanList.forEach(methodBean -> methodBean.setClassName(classBean.getClassName())); classBean.setMethodBeanList(methodBeanList); @@ -338,6 +351,28 @@ public class ReadDomainPlantDocService { if(!methodBean.getReturnClass().contains("void")){ methodBean.setReturnBody("return null;"); } + String methodAnnoTag = methodBean.getMethodName(); + if(methodAnnoTag.contains("@")){ + + List methodSegList = new ArrayList<>(); + String [] annoArr = methodAnnoTag.split("\\."); + List annoTagList = new ArrayList<>(); + for (String annoTag : annoArr){ + if(annoTag.contains("@")){ + annoTagList.add(annoTag); + }else { + methodSegList.add(annoTag); + } + } + if(methodSegList.size() == 1){ + methodBean.setMethodName(methodSegList.get(0)); + }else if(methodSegList.size() > 1){ + methodBean.setMethodName(StringUtils.join(methodSegList,".")); + } + methodBean.setAnnotationTagList(annoTagList); + } + + methodBean.buildParamArr(); methodBeanList.add(methodBean); } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java similarity index 93% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java index 40b5de7..dd5f3de 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadInvokeSequencePlantDocService.java @@ -1,20 +1,18 @@ -package com.coderman.codemaker.service.plantuml; - -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.bean.component.ComponentContextBean; -import com.coderman.codemaker.bean.invoke.InvokeContextBean; -import com.coderman.codemaker.bean.plantuml.*; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.service.invoker.MethodFactoryService; -import com.coderman.codemaker.service.invoker.MethodInvokeService; +package com.tianhua.codemaker.service.plantuml; + +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.invoke.InvokeContextBean; +import com.tianhua.codemaker.bean.plantuml.*; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.service.invoker.MethodFactoryService; +import com.tianhua.codemaker.service.invoker.MethodInvokeService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.assertj.core.util.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; -import java.util.ConcurrentModificationException; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -24,7 +22,7 @@ import java.util.concurrent.atomic.AtomicReference; * Description: * date: 2021/10/15 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -79,10 +77,6 @@ public class ReadInvokeSequencePlantDocService { return; } - if(org.apache.commons.collections4.CollectionUtils.isEmpty(invokerClassBean.getDynamicImportPackageList())){ - invokerClassBean.setDynamicImportPackageList(Lists.newArrayList()); - } - String invokerMethodStr = invokeArr[0].split(invokerClassBean.getClassName() + ".")[1].trim(); String providerMethodStr = invokeArr[1].split(providerClassBean.getClassName() + ".")[1].trim(); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadPlantUMLDocService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadPlantUMLDocService.java similarity index 74% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadPlantUMLDocService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadPlantUMLDocService.java index 04d422e..4c8acdf 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/plantuml/ReadPlantUMLDocService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/ReadPlantUMLDocService.java @@ -1,13 +1,14 @@ -package com.coderman.codemaker.service.plantuml; +package com.tianhua.codemaker.service.plantuml; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.config.AppServiceConfig; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; -import org.springframework.util.ResourceUtils; import java.io.File; import java.io.IOException; @@ -17,7 +18,7 @@ import java.util.List; * Description: 读取plantUML类图统一处理类 * date: 2021/10/25 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -27,6 +28,9 @@ public class ReadPlantUMLDocService { @Autowired private AppServiceConfig appServiceConfig; + @Autowired + private ResourceLoader resourceLoader; + /** * 读取领域模型plantUML类图文档 * @param plantUMLFileName @@ -59,7 +63,9 @@ public class ReadPlantUMLDocService { return null; } try { - File file = ResourceUtils.getFile("classpath:"+plantUMLFileDir+"/"+applicationName+"/"+plantUMLFileName); + Resource resource = resourceLoader.getResource("classpath:"+plantUMLFileDir+"/"+applicationName+"/"+plantUMLFileName); + File file = resource.getFile(); + //File file = ResourceUtils.getFile("classpath:"+plantUMLFileDir+"/"+applicationName+"/"+plantUMLFileName); return FileUtils.readLines(file,"UTF-8"); } catch (IOException e) { e.printStackTrace(); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/WriteDomainPlantDocService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/WriteDomainPlantDocService.java new file mode 100644 index 0000000..9120177 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/plantuml/WriteDomainPlantDocService.java @@ -0,0 +1,71 @@ +package com.tianhua.codemaker.service.plantuml; + +import com.tianhua.codemaker.config.AppServiceConfig; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +/** + * Description: 将plantuml 文档同步写到项目文件中 + * date: 2021/6/28 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + * + */ +@Service +@Slf4j +public class WriteDomainPlantDocService { + + @Autowired + private AppServiceConfig appServiceConfig; + @Autowired + private ReadPlantUMLDocService readPlantUMLDocService; + + /** + * 将领域模型文档写入到项目工程中 + */ + public void writePlantUMLDomainDoc(){ + String outPath = appServiceConfig.getUMLDocOutPath(); + List contentList = readPlantUMLDocService.readDomainPlantDoc(appServiceConfig.getPlantUMLFileName()); + if(CollectionUtils.isEmpty(contentList)){ + return; + } + String filePath = outPath + "/" + appServiceConfig.getPlantUMLFileName(); + try { + FileUtils.writeLines(new File(filePath),contentList); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * 将调用时序文档写入到项目工程中 + */ + public void writePlantUMLSequenceDoc(List invokeSequenceFileList){ + String outPath = appServiceConfig.getUMLDocOutPath(); + + for (String fileName : invokeSequenceFileList){ + List contentList = readPlantUMLDocService.readInvokeSequencePlantDoc(fileName); + if(CollectionUtils.isEmpty(contentList)){ + return; + } + String filePath = outPath + "/" + fileName; + try { + FileUtils.writeLines(new File(filePath),contentList); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } +} diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/AbstractVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/AbstractVarRegistry.java similarity index 69% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/AbstractVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/AbstractVarRegistry.java index a1c1759..c3bec78 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/AbstractVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/AbstractVarRegistry.java @@ -1,27 +1,46 @@ -package com.coderman.codemaker.service.registry; - -import com.coderman.codemaker.app.dynamicddd.DomainElementHandler; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.service.component.ComponentDecorateService; -import com.coderman.codemaker.service.invoker.InvokeElementRegistService; -import com.coderman.codemaker.service.invoker.InvokeSequenceService; -import com.coderman.codemaker.app.dynamicddd.derivedhandler.*; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.bean.dddelement.*; -import com.coderman.codemaker.bean.dddelementderive.*; -import com.coderman.codemaker.bean.plantuml.ClassBean; -import com.coderman.codemaker.bean.plantuml.InterfaceBean; -import com.coderman.codemaker.bean.plantuml.PlantUmlContextBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.enums.DomainDerivedElementEnum; -import com.coderman.codemaker.enums.DomainElementEnum; -import com.coderman.codemaker.service.plantuml.ReadDomainPlantDocService; +package com.tianhua.codemaker.service.registry; + +import com.alibaba.fastjson.JSON; +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.api.IJavsAdapterSerivce; +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.app.dynamicddd.ElementHandlerContainer; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.component.ComponentConfigBean; +import com.tianhua.codemaker.bean.component.ComponentContextBean; +import com.tianhua.codemaker.bean.config.FtlBean; +import com.tianhua.codemaker.bean.config.PomBean; +import com.tianhua.codemaker.bean.config.ProjectBean; +import com.tianhua.codemaker.config.ConfigFactory; +import com.tianhua.codemaker.enums.ClassEnum; +import com.tianhua.codemaker.enums.CodeElementEnum; +import com.tianhua.codemaker.service.AnnotationParseService; +import com.tianhua.codemaker.service.adapter.JavsAdapterBeanFactory; +import com.tianhua.codemaker.service.component.ComponentDecorateService; +import com.tianhua.codemaker.service.invoker.InvokeElementRegistService; +import com.tianhua.codemaker.service.invoker.InvokeSequenceService; +import com.tianhua.codemaker.app.dynamicddd.derivedhandler.*; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.bean.dddelement.*; +import com.tianhua.codemaker.bean.dddelementderive.*; +import com.tianhua.codemaker.bean.plantuml.ClassBean; +import com.tianhua.codemaker.bean.plantuml.InterfaceBean; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.enums.DomainDerivedElementEnum; +import com.tianhua.codemaker.enums.DomainElementEnum; +import com.tianhua.codemaker.service.plantuml.ReadDomainPlantDocService; +import com.tianhua.codemaker.service.registry.factory.ElementFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * description: AbstractVarRegistry
@@ -29,6 +48,7 @@ import java.util.Map; * author: coderman
* version: 1.0
*/ +@Slf4j public abstract class AbstractVarRegistry { @Autowired private ReadDomainPlantDocService readFileService; @@ -54,6 +74,10 @@ public abstract class AbstractVarRegistry { @Resource(name = "domainFactoryElementHandler") private DomainElementHandler domainFactoryElementHandler; + + @Resource(name = "domainServiceElementHandler") + private DomainElementHandler domainServiceElementHandler; + @Resource(name = "infrastAclElementHandler") private DomainElementHandler infrastAclElementHandler; @@ -85,6 +109,10 @@ public abstract class AbstractVarRegistry { @Resource(name = "cacheElementHandler") private DomainElementHandler cacheElementHandler; + + + + //------------------以下为领域元素派生类对象处理器 @Resource(name = "derivedDTOElementHandler") @@ -120,6 +148,9 @@ public abstract class AbstractVarRegistry { @Resource(name = "derivedGatawayImplElementHandler") private DerivedGatawayImplElementHandler derivedGatawayImplElementHandler; + @Resource(name = "derivedServiceImplElementHandler") + private DerivedServiceImplElementHandler derivedServiceImplElementHandler; + @Resource(name = "derivedInfrastAclImplElementHandler") private DerivedInfrastAclImplElementHandler derivedInfrastAclImplElementHandler; @@ -144,6 +175,22 @@ public abstract class AbstractVarRegistry { private ComponentDecorateService componentDecorateService; + @Autowired + protected ElementHandlerContainer elementHandlerContainer; + + + @Autowired + private AnnotationParseService annotationParseService; + + @Autowired + private JavsAdapterBeanFactory javsAdapterBeanFactory; + + + @Autowired + private ConfigFactory configFactory; + + @Autowired + private ElementFactory elementFactory; /** * 合并全局配置 @@ -163,10 +210,15 @@ public abstract class AbstractVarRegistry { } PlantUmlContextBean plantUmlContextBean = readFileService.getPlantUmlContextBean(plantUMLName); + if(plantUmlContextBean == null){ return varMap; } + //注解解析装饰到plantuml上下文中 + annotationParseService.dealPlantUmlContextAnnotation(plantUmlContextBean); + + Map tableBeanMap = (Map)varMap.get("table"); @@ -174,11 +226,12 @@ public abstract class AbstractVarRegistry { plantUmlContextBean.setAppName(appServiceConfig.getApplicationName()); plantUmlContextBean.setApplicationType(appServiceConfig.getApplicationType()); - + appServiceConfig.getPomConfigMap().forEach((k,v)-> plantUmlContextBean.addPomBean(v)); tableBeanMap.forEach((k,v)->{ ClassBean classBean = v.convertToClassBean(appServiceConfig.getPackage()+".infrast.dao.dataobject",columnBeanListMap.get(k)); - InterfaceBean mapperInterface = v.convertToMapperInterface(appServiceConfig.getPackage()+".infrast.dao.mapper",columnBeanListMap.get(k)); + + InterfaceBean mapperInterface = v.convertToMapperInterface(appServiceConfig.getPackage()+".infrast.dao.mapper",columnBeanListMap.get(k), appServiceConfig.containsMybatisPlus()); plantUmlContextBean.getClassBeanMap().put(classBean.getClassName(),classBean); plantUmlContextBean.getInterfaceBeanMap().put(mapperInterface.getClassName(),mapperInterface); @@ -187,9 +240,14 @@ public abstract class AbstractVarRegistry { //这里统一注册派生类对象上下文,后续各种handler内部逻辑则不需要再判断是否为空了 plantUmlContextBean.setDerivedPlantUmlContextBean(new PlantUmlContextBean()); - //打标 varMap.put("dynamicddd","dynamicddd"); + varMap.put("dynamicInvokeFileList",plantUmlContextBean.getDynamicInvokeFileList()); + + + //注册独立类和工具 + invokeElementRegistService.registDefaultClass(plantUmlContextBean); + DomainBoElementBean domainBoElementBean = (DomainBoElementBean)domainElementHandler.getElementBeanList(plantUmlContextBean); ValueObjectElementBean valueObjectElementBean = (ValueObjectElementBean)valueObjectElementHandler.getElementBeanList(plantUmlContextBean); @@ -197,6 +255,8 @@ public abstract class AbstractVarRegistry { GatawayElementBean gatawayElementBean = (GatawayElementBean)domainGatawayElementHandler.getElementBeanList(plantUmlContextBean); DomainMsgBodyElementBean domainMsgBodyElementBean = (DomainMsgBodyElementBean)msgBodyElementHandler.getElementBeanList(plantUmlContextBean); FactoryElementBean factoryElementBean = (FactoryElementBean)domainFactoryElementHandler.getElementBeanList(plantUmlContextBean); + ServiceElementBean serviceElementBean = (ServiceElementBean)domainServiceElementHandler.getElementBeanList(plantUmlContextBean); + InfrastAclElementBean infrastAclElementBean = (InfrastAclElementBean)infrastAclElementHandler.getElementBeanList(plantUmlContextBean); CommandElementBean commandElementBean = (CommandElementBean)appCmdElementHandler.getElementBeanList(plantUmlContextBean); ExecutorElementBean executorElementBean = (ExecutorElementBean)appExeElementHandler.getElementBeanList(plantUmlContextBean); @@ -219,21 +279,27 @@ public abstract class AbstractVarRegistry { VoBoConvertElementBean voBoConvertElementBean = derivedVOBOConvertElementHandler.getElementBeanList(plantUmlContextBean); EnumElementBean enumElementBean = derivedEnumElementHandler.getElementBeanList(plantUmlContextBean); GatawayImplElementBean gatawayImplElementBean = derivedGatawayImplElementHandler.getElementBeanList(plantUmlContextBean); + ServiceImplElementBean serviceImplElementBean = derivedServiceImplElementHandler.getElementBeanList(plantUmlContextBean); + RepositoryImplElementBean repositoryImplElementBean = derivedRepositoryImplElementHandler.getElementBeanList(plantUmlContextBean); InfrastAclImplElementBean infrastAclImplElementBean = derivedInfrastAclImplElementHandler.getElementBeanList(plantUmlContextBean); FeignElementBean feignElementBean = derivedFeignElementHandler.getElementBeanList(plantUmlContextBean); + List validateServiceList = appServiceConfig.getValidateServiceBeanList(); + if(CollectionUtils.isNotEmpty(validateServiceList)){ + validateServiceList.stream().forEach(validateService -> validateService.dealValidate(plantUmlContextBean)); + } //进行框架中间件和组件的包装和注册 componentDecorateService.decorateComponent(plantUmlContextBean); - //注册独立类和工具 - invokeElementRegistService.registDefaultClass(plantUmlContextBean); //最后进行动态调用绘制 invokeSequenceService.exeDynamicInvoke(plantUmlContextBean); + elementFactory.dealPomDependency(plantUmlContextBean); + //这里增加动态mapper的代码生成,补足调用时序图中缺失的方法 DynamicMapperElementBean dynamicMapperElementBean = (DynamicMapperElementBean)dynamicMapperElementHandler.getElementBeanList(plantUmlContextBean); //在动态调用绘制之后进行处理,比较特殊 @@ -241,6 +307,37 @@ public abstract class AbstractVarRegistry { + //启用javs脚本引擎 + if(appServiceConfig.enableJavsScript()){ + log.info("准备构建javs项目.............."); + IJavsAdapterSerivce javsAdapterSerivce = javsAdapterBeanFactory.getJavsAdapterService(); + javsAdapterSerivce.translateJavsScript(plantUmlContextBean,appServiceConfig.getJavsProjectOutPath()); + javsAdapterSerivce.generateJavsScriptProject(plantUmlContextBean,appServiceConfig.getJavsProjectOutPath()); + log.info("构建javs项目结束.............."); + } + + Map customElementMap = elementFactory.getElementMap(plantUmlContextBean); + if(!customElementMap.isEmpty()){ + List ftlBeanList = appServiceConfig.getCustomCodeFtlList(); + Map ftlBeanMap = ftlBeanList.stream().collect(Collectors.toMap(FtlBean::getFtlStr,o->o)); + for (Map.Entry entry : customElementMap.entrySet()){ + FtlBean ftlBean = ftlBeanMap.get(entry.getKey()); + if(ClassEnum.isClass(ftlBean.getClassType())){ + varMap.put(ftlBean.getFtlStr(),entry.getValue().refreshClass(plantUmlContextBean, ftlBean.getCodeTempFileName()).getClassBeanList()); + } + if(ClassEnum.isInterface(ftlBean.getClassType())){ + varMap.put(ftlBean.getFtlStr(),entry.getValue().refreshInterface(plantUmlContextBean, ftlBean.getCodeTempFileName()).getInterfaceBeanList()); + } + if(ClassEnum.isEnum(ftlBean.getClassType())){ + varMap.put(ftlBean.getFtlStr(),entry.getValue().getClassBeanList()); + } + if(ClassEnum.isPom(ftlBean.getClassType())){ + varMap.put(ftlBean.getFtlStr(),entry.getValue().getPomBeanList()); + } + } + } + + varMap.put("domainevent",domainEventElementBean.getClassBeanList()); varMap.put("domainbo",domainBoElementBean.getClassBeanList()); varMap.put("domainvalueobject",valueObjectElementBean.getClassBeanList()); @@ -248,6 +345,8 @@ public abstract class AbstractVarRegistry { varMap.put("repository",repositoryElementBean.refreshInterface(plantUmlContextBean,DomainElementEnum.REPOSITORY.getElement()).getInterfaceBeanList()); varMap.put("gataway",gatawayElementBean.refreshInterface(plantUmlContextBean,DomainElementEnum.GATAWAY.getElement()).getInterfaceBeanList()); varMap.put("domainmsg",domainMsgBodyElementBean.getClassBeanList()); + varMap.put("domainservice",serviceElementBean.refreshClass(plantUmlContextBean,DomainElementEnum.SERVICE.getElement()).getInterfaceBeanList()); + varMap.put("domainfactory",factoryElementBean.refreshClass(plantUmlContextBean,DomainElementEnum.FACTORY.getElement()).getClassBeanList()); varMap.put("infrastacl",infrastAclElementBean.getInterfaceBeanList()); varMap.put("infrastaclparam",infrastAclElementBean.getClassBeanList()); @@ -261,26 +360,31 @@ public abstract class AbstractVarRegistry { varMap.put("cache",cacheElementBean.getClassBeanList()); //处理派生类 - varMap.put("derivedto",dtoElementBean.getClassBeanList()); + varMap.put("derivedto",dtoElementBean.refreshClass(plantUmlContextBean, DomainDerivedElementEnum.DTO.getElement()).getClassBeanList()); varMap.put("derivefacade",facadeElementBean.refreshInterface(plantUmlContextBean,DomainDerivedElementEnum.FACADE.getElement()).getInterfaceBeanList()); varMap.put("derivefeign",feignElementBean.refreshInterface(plantUmlContextBean,DomainDerivedElementEnum.FEIGN.getElement()).getInterfaceBeanList()); varMap.put("derivefacadeimpl",facadeImplElementBean.refreshClass(plantUmlContextBean, DomainDerivedElementEnum.FACADE_IMPL.getElement()).getClassBeanList()); varMap.put("dtoboconvert",dtoBoConvertElementBean.getInterfaceBeanList()); varMap.put("doboconvert",doBoConvertElementBean.getInterfaceBeanList()); - varMap.put("adaptervo",voElementBean.getClassBeanList()); - varMap.put("controller",controllerElementBean.refreshClass(plantUmlContextBean,DomainDerivedElementEnum.CONTROLLER.getElement()).getClassBeanList()); + varMap.put("adaptervo",voElementBean.refreshClass(plantUmlContextBean, DomainDerivedElementEnum.VO.getElement()).getClassBeanList()); + varMap.put(CodeElementEnum.CONTROLLER.getCode(),controllerElementBean.refreshClass(plantUmlContextBean,DomainDerivedElementEnum.CONTROLLER.getElement()).getClassBeanList()); varMap.put("voboconvert",voBoConvertElementBean.getInterfaceBeanList()); varMap.put("apienum",enumElementBean.getEnumBeanList()); varMap.put("gatawayimpl",gatawayImplElementBean.refreshClass(plantUmlContextBean, DomainElementEnum.GATAWAY_IMPL.getElement()).getClassBeanList()); + varMap.put("serviceimpl",gatawayImplElementBean.refreshClass(plantUmlContextBean, DomainElementEnum.SERVICE_IMPL.getElement()).getClassBeanList()); + varMap.put("repositoryimpl",repositoryImplElementBean.refreshClass(plantUmlContextBean, DomainElementEnum.REPOSITORY_IMPL.getElement()).getClassBeanList()); varMap.put("infrastaclimpl",infrastAclImplElementBean.refreshClass(plantUmlContextBean, DomainElementEnum.ADAPTER_ACL_IMPL.getElement()).getClassBeanList()); varMap.put("dynamicmapper",dynamicMapperElementBean.getInterfaceBeanList()); varMap.put("dynamicmapperxml",dynamicMapperElementBean.getClassBeanList()); varMap.put("convertdto2dto",dto2DtoConvertElementBean.getInterfaceBeanList()); + varMap.put("projectBean",configFactory.getProjectBean(plantUmlContextBean)); return varMap; } public abstract Map getRegistVarMap(); + + } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java similarity index 72% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java index 6943366..72900da 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ApplicationPropertiesVarRegistry.java @@ -1,7 +1,7 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; import java.util.Map; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/BaseControllerVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/BaseControllerVarRegistry.java similarity index 72% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/BaseControllerVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/BaseControllerVarRegistry.java index fafcedc..0b23a44 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/BaseControllerVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/BaseControllerVarRegistry.java @@ -1,6 +1,6 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; import java.util.Map; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ControllerVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ControllerVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ControllerVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ControllerVarRegistry.java index 97d9041..35c44ad 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ControllerVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ControllerVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/EntityVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/EntityVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/EntityVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/EntityVarRegistry.java index 1e0f8d0..74f9a5a 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/EntityVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/EntityVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperVarRegistry.java similarity index 69% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperVarRegistry.java index 25f5bc1..7b12dcd 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -27,8 +27,10 @@ public class MapperVarRegistry extends AbstractVarRegistry { Map tableBeanMap = temlateVarService.getTableBeanMap(); Map> columnBeanListMap = temlateVarService.getColumnBeanMap(); Map map = new HashMap<>(); + List sqlContentList = temlateVarService.getSqlContent(); map.put("table",tableBeanMap); map.put("columns",columnBeanListMap); + map.put("sql",sqlContentList); return map; } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperXmlVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperXmlVarRegistry.java similarity index 66% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperXmlVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperXmlVarRegistry.java index f4b9bfc..20d2583 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/MapperXmlVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/MapperXmlVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -33,16 +33,20 @@ public class MapperXmlVarRegistry extends AbstractVarRegistry { for (Map.Entry entry : tableBeanMap.entrySet()){ List columnNameList = columnBeanListMap.get(entry.getKey()).stream().map(ColumnBean::getColumnName).collect(Collectors.toList()); + List columnFieldList = columnBeanListMap.get(entry.getKey()).stream().map(ColumnBean::getColumnFieldName).collect(Collectors.toList()); + entry.getValue().setColumnNameList(StringUtils.join(columnNameList,",")); - entry.getValue().setInsertColumnNameList(getInsertColumnNameList(columnNameList).replace("#{id},","")); - entry.getValue().setUpdateColumnNameList(getUpdateColumnNameList(columnNameList).replace("id=#{id},","")); + entry.getValue().setInsertColumnNameList(getInsertColumnNameList(columnFieldList).replace("#{id},","")); + entry.getValue().setUpdateColumnNameList(getUpdateColumnNameList(columnNameList,columnFieldList).replace("id=#{id},","")); entry.getValue().setInsertColumnNames(getInsertColumnNamesStr(columnNameList)); + } + List sqlContentList = temlateVarService.getSqlContent(); + Map map = new HashMap<>(); map.put("table",tableBeanMap); map.put("columns",columnBeanListMap); - - + map.put("sql",sqlContentList); return map; } @@ -61,10 +65,10 @@ public class MapperXmlVarRegistry extends AbstractVarRegistry { * @param columnNameList * @return */ - private String getUpdateColumnNameList(List columnNameList){ + private String getUpdateColumnNameList(List columnNameList,List columnFieldList){ List list = new ArrayList<>(); - for (String columnName : columnNameList){ - String columnStr = columnName+"=#{"+columnName+"}"; + for (int i = 0;i < columnNameList.size();i ++){ + String columnStr = columnNameList.get(i)+"=#{"+columnFieldList.get(i)+"}"; list.add(columnStr); } return StringUtils.join(list,","); @@ -81,4 +85,15 @@ public class MapperXmlVarRegistry extends AbstractVarRegistry { return StringUtils.join(tmpList,","); } + private String getInsertFieldStr(List columnFieldList){ + List tmpList = new ArrayList<>(); + for (String columnField : columnFieldList){ + if(columnField.equals("id")){ + continue; + } + tmpList.add(columnField); + } + return StringUtils.join(tmpList,","); + } + } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/PomVarRegsitry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/PomVarRegsitry.java similarity index 70% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/PomVarRegsitry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/PomVarRegsitry.java index 3b01f70..7adcebc 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/PomVarRegsitry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/PomVarRegsitry.java @@ -1,6 +1,6 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; import java.util.Map; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceImplVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceImplVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceImplVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceImplVarRegistry.java index 351bec5..a7ab623 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceImplVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceImplVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceVarRegistry.java index ebbd382..1cf1170 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/ServiceVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/ServiceVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java similarity index 73% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java index 5040596..efd2428 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/SpringApplicationContextVarRegistry.java @@ -1,6 +1,6 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; import java.util.Map; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/TestVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/TestVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/TestVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/TestVarRegistry.java index 569d2a3..a411736 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/TestVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/TestVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/VoVarRegistry.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/VoVarRegistry.java similarity index 75% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/VoVarRegistry.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/VoVarRegistry.java index be9d294..84d21be 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/registry/element/VoVarRegistry.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/registry/element/VoVarRegistry.java @@ -1,9 +1,9 @@ -package com.coderman.codemaker.service.registry.element; +package com.tianhua.codemaker.service.registry.element; -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.service.registry.AbstractVarRegistry; -import com.coderman.codemaker.service.template.TemlateVarService; +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.service.registry.AbstractVarRegistry; +import com.tianhua.codemaker.service.template.TemlateVarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/FreemarkerService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/FreemarkerService.java similarity index 81% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/FreemarkerService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/FreemarkerService.java index d301fc8..ecd0aa1 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/FreemarkerService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/FreemarkerService.java @@ -1,8 +1,8 @@ -package com.coderman.codemaker.service.template; +package com.tianhua.codemaker.service.template; -import com.coderman.codemaker.bean.GlobalConstant; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.utils.FreemarkerUtils; +import com.tianhua.codemaker.bean.GlobalConstant; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.utils.FreemarkerUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,7 +13,7 @@ import java.util.Map; * Description:freemarker代码模板服务 * date: 2021/6/23 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -87,4 +87,15 @@ public class FreemarkerService { public String parseTplCommon(String viewName, Map params) { return FreemarkerUtils.parseTpl(GlobalConstant.SINGLE_CLASS_COMMON+"/"+viewName, params); } + + /** + * + * 生成初始化的独立工具类如aop,baseevent,applicaton等 + * @param viewName + * @param params + * @return + */ + public String parseTplConfig(String viewName, Map params) { + return FreemarkerUtils.parseTpl(GlobalConstant.CONFIG+"/"+viewName, params); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/TemlateVarService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/TemlateVarService.java similarity index 54% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/TemlateVarService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/TemlateVarService.java index 5bbb069..5aa12f0 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/template/TemlateVarService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/template/TemlateVarService.java @@ -1,17 +1,25 @@ -package com.coderman.codemaker.service.template; - -import com.coderman.codemaker.bean.ColumnBean; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.dao.SqlMapper; -import com.coderman.codemaker.utils.StringHelperUtils; +package com.tianhua.codemaker.service.template; + +import com.tianhua.codemaker.bean.ColumnBean; +import com.tianhua.codemaker.bean.TableBean; +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.dao.SqlMapper; +import com.coderman.codemaker.dberparse.ERPlantUMLParseService; +import com.coderman.codemaker.dberparse.bean.EntityBean; +import com.tianhua.codemaker.utils.StringHelperUtils; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; + import javax.annotation.Resource; +import java.io.File; +import java.io.IOException; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -36,14 +44,37 @@ public class TemlateVarService { private Map tableBeanMap; private Map> columnBeanMap; + private Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); + /** + * plantuml e-r图解析内容 + */ + private List erContentList; + + /** + * plantuml e-r图解析对象列表 + */ + private List entityBeanList; + + + @Autowired + private ERPlantUMLParseService erPlantUMLParseService; + + @Autowired + private ResourceLoader resourceLoader; + /** * 获取加工后的tableBean元数据 * @return */ public Map exeGetTableBeanMap(){ + String dbName = appServiceConfig.getDbName(); + //不链接db + if(!appServiceConfig.getLinkDB()){ + return buildTableBeanMap(); + } List tableBeanList = sqlMapper.getDBTableBeanList(dbName); Map tableBeanMap = new HashMap<>(); tableBeanList.stream().forEach(e->{ @@ -75,6 +106,11 @@ public class TemlateVarService { */ private Map> exeGetColumnBeanMap(){ String dbName = appServiceConfig.getDbName(); + //不链接db + if(!appServiceConfig.getLinkDB()){ + return buildColumnBeanMap(); + } + List columnBeanList = sqlMapper.getColumnBeanList(dbName); columnBeanList.stream().forEach(e->{ String columnFieldName = getHumpTableName(e.getColumnName()); @@ -164,10 +200,6 @@ public class TemlateVarService { - - - - /** * 获取字段类型对应的javaentity的java类型 * @param columnType @@ -203,6 +235,8 @@ public class TemlateVarService { } else if(columnType.toUpperCase().contains("DECIMAL")){ return "BigDecimal"; + }else if(columnType.contains("json")){ + return "String"; } return null; } @@ -224,4 +258,116 @@ public class TemlateVarService { return columnBeanMap; } + + /** + * 读取plantUMl文件 + * @return + */ + private List readPlantUMLContent(){ + try { + org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:er-plantuml/"+appServiceConfig.getApplicationName() + "/" + appServiceConfig.getDbName() + ".puml"); + File file = resource.getFile(); + //File file = ResourceUtils.getFile("classpath:er-plantuml/"+appServiceConfig.getApplicationName() + "/" + appServiceConfig.getDbName() + ".puml"); + return FileUtils.readLines(file,"UTF-8"); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 从plantuml文档中构建实体模型 + * @return + */ + public List getEntityBeanList(){ + if(CollectionUtils.isEmpty(this.entityBeanList)){ + this.erContentList = readPlantUMLContent(); + this.entityBeanList = erPlantUMLParseService.getPlantUmlContextBean(erContentList); + } + return this.entityBeanList; + } + + + /** + * 从e-r图文档中构建tableBean模型 + * @return + */ + private Map buildTableBeanMap(){ + List entityBeanList = getEntityBeanList(); + Map tableBeanMap = new HashMap<>(); + for (EntityBean entityBean : entityBeanList){ + String humpTableName = getHumpTableName(entityBean.getTableName()); + TableBean tableBean = new TableBean(); + + tableBean.setTableComment(entityBean.getTableDesc()); + tableBean.setHumpTableName(humpTableName); + + String humpClassName = StringHelperUtils.getHumpClassName(humpTableName); + tableBean.setHumpClassName(humpClassName); + + String tableName ; + if(entityBean.getTableName().contains("_")){ + String[] tableArr = entityBean.getTableName().split("_"); + if(isNum(tableArr[tableArr.length - 1])){ + String[] newArr = Arrays.copyOfRange(tableArr, 0, tableArr.length - 1); + tableName = StringUtils.join(newArr,"_"); + }else { + tableName = entityBean.getTableName(); + } + }else { + tableName = entityBean.getTableName(); + } + tableBean.setTableName(tableName); + tableBeanMap.put(tableName,tableBean); + } + return tableBeanMap; + } + + /** + * 从e-r图文档中构建columnBean模型 + * @return + */ + private Map> buildColumnBeanMap() { + List entityBeanList = getEntityBeanList(); + Map> columnBeanMap = new HashMap<>(); + for (EntityBean entityBean : entityBeanList) { + List columnBeans = new ArrayList<>(); + entityBean.getColumnBeanList().forEach(entityFieldBean -> { + ColumnBean columnBean = new ColumnBean(); + String columnFieldName = getHumpTableName(entityFieldBean.getColumnName()); + columnBean.setColumnFieldName(columnFieldName); + + String columnTypeName = getColumnTypeName(entityFieldBean.getColumnType()); + columnBean.setColumnTypeName(columnTypeName); + String columnUperName = columnFieldName.substring(0,1).toUpperCase().concat(columnFieldName.substring(1)); + columnBean.setColumnUperName(columnUperName); + columnBean.setColumnName(entityFieldBean.getColumnName()); + columnBean.setColumnComment(entityFieldBean.getColumnDesc()); + String tableName; + if(entityBean.getTableName().contains("_")){ + String[] tableArr = entityBean.getTableName().split("_"); + if(isNum(tableArr[tableArr.length - 1])){ + String[] newArr = Arrays.copyOfRange(tableArr, 0, tableArr.length - 1); + tableName = StringUtils.join(newArr,"_"); + }else { + tableName = entityBean.getTableName(); + } + }else { + tableName = entityBean.getTableName(); + } + columnBean.setTableName(tableName); + columnBeans.add(columnBean); + }); + columnBeanMap.put(entityBean.getTableName(),columnBeans); + } + return columnBeanMap; + } + + /** + * 获取解析的sql内容 + * @return + */ + public List getSqlContent(){ + return erPlantUMLParseService.parseERPlantUML(this.erContentList); + } } diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/write/WriteSpringbootService.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/write/WriteSpringbootService.java similarity index 74% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/write/WriteSpringbootService.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/write/WriteSpringbootService.java index 0c98bb4..7079e9a 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/service/write/WriteSpringbootService.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/service/write/WriteSpringbootService.java @@ -1,11 +1,11 @@ -package com.coderman.codemaker.service.write; - -import com.coderman.codemaker.config.AppServiceConfig; -import com.coderman.codemaker.config.ProjectTemplateSpringbootConfig; -import com.coderman.codemaker.enums.TemplateFileEnum; -import com.coderman.codemaker.service.dberpicture.DBErPictureService; -import com.coderman.codemaker.utils.Constant; -import com.coderman.codemaker.utils.FreemarkerUtils; +package com.tianhua.codemaker.service.write; + +import com.tianhua.codemaker.config.AppServiceConfig; +import com.tianhua.codemaker.config.ProjectTemplateSpringbootConfig; +import com.tianhua.codemaker.enums.TemplateFileEnum; +import com.tianhua.codemaker.service.dberpicture.DBErPictureService; +import com.tianhua.codemaker.utils.Constant; +import com.tianhua.codemaker.utils.FreemarkerUtils; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +44,7 @@ public class WriteSpringbootService { */ public void writeMapperXml(String content, String humpClassName) { String fileName = humpClassName + "Mapper.xml"; - String filePath = projectTemplateConfig.getOutPath() + Constant.MAPPER + "/" + fileName; + String filePath = projectTemplateConfig.getModulePath() + Constant.MAPPER + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -60,10 +60,10 @@ public class WriteSpringbootService { */ public void writeEntity(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/entity"; String fileName = humpClassName + "Entity.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -80,10 +80,10 @@ public class WriteSpringbootService { */ public void writeVO(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/vo"; String fileName = humpClassName + "VO.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -100,10 +100,10 @@ public class WriteSpringbootService { */ public void writeMapper(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/mapper"; String fileName = humpClassName + "Mapper.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -119,10 +119,10 @@ public class WriteSpringbootService { */ public void writeService(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/service"; String fileName = humpClassName + "Service.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -138,10 +138,10 @@ public class WriteSpringbootService { */ public void writeServiceImpl(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/service/impl"; String fileName = humpClassName + "ServiceImpl.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -157,10 +157,10 @@ public class WriteSpringbootService { */ public void writeBaseController(String content) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/controller"; String fileName = "BaseController.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -175,10 +175,10 @@ public class WriteSpringbootService { */ public void writeSpringApplicationContext(String content) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/utils"; String fileName = "SpringApplicationContext.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -194,10 +194,10 @@ public class WriteSpringbootService { */ public void writeTest(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.TEST_JAVA + "/" + packagePath + "/service/test"; String fileName = humpClassName + "ServiceTest.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -212,10 +212,10 @@ public class WriteSpringbootService { */ public void writeApplication(String content) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + ""; String fileName = "Application.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -232,10 +232,10 @@ public class WriteSpringbootService { */ public void writeController(String content, String humpClassName) { String packageName = appServiceConfig.getPackage(); - String packagePath = packageName.replace(".", "\\"); + String packagePath = packageName.replace(".", "/"); String filePath = Constant.JAVA + "/" + packagePath + "/controller"; String fileName = humpClassName + "Controller.java"; - filePath = projectTemplateConfig.getOutPath() + "\\" + filePath + "\\" + fileName; + filePath = projectTemplateConfig.getModulePath() + "/" + filePath + "/" + fileName; try { FileUtils.write(new File(filePath), content, "UTF-8"); } catch (IOException e) { @@ -276,40 +276,20 @@ public class WriteSpringbootService { } - - - /** - * 写公共基础服务类 - * - * @param varMap - */ - public void writeCommon(Map varMap, String fast) { - String baseControllerContent = FreemarkerUtils.parseTpl(fast+TemplateFileEnum.BASE_CONTROLLER.getTempFileName(), varMap); - this.writeBaseController(baseControllerContent); - - String SpringApplicationContextContent = FreemarkerUtils.parseTpl(fast+TemplateFileEnum.SPRING_APPLICATION_CONTEXT.getTempFileName(), varMap); - this.writeSpringApplicationContext(SpringApplicationContextContent); - - String application = FreemarkerUtils.parseTpl(fast+TemplateFileEnum.APPLICATION.getTempFileName(), varMap); - this.writeApplication(application); - - } - - /** * 整合e-r图生成工具 * * @param tableBeanMap * @param columnBeanListMap */ - public void writeERPicture(Map tableBeanMap, Map> columnBeanListMap) { - String filePath = projectTemplateConfig.getOutPath() + Constant.ER_PICTURE + "/" + projectTemplateConfig.getDbName() + ".puml"; + public void writeERPicture(Map tableBeanMap, Map> columnBeanListMap) { + String filePath = projectTemplateConfig.getModulePath() + Constant.ER_PICTURE + "/" + projectTemplateConfig.getDbName() + ".puml"; List tableBeanList = new ArrayList<>(); tableBeanMap.forEach((k, v) -> { com.coderman.codemaker.dbergenerate.bean.TableBean tableBean = new com.coderman.codemaker.dbergenerate.bean.TableBean(); tableBean.setTableComment(v.getTableComment()); tableBean.setTableName(v.getTableName()); - List columnBeanList = columnBeanListMap.get(k); + List columnBeanList = columnBeanListMap.get(k); List columnBeanList1 = new ArrayList<>(); columnBeanList.forEach(columnBean -> { com.coderman.codemaker.dbergenerate.bean.ColumnBean columnBean1 = new com.coderman.codemaker.dbergenerate.bean.ColumnBean(); diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/Constant.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/Constant.java similarity index 94% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/Constant.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/Constant.java index 55308f4..7f51149 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/Constant.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/Constant.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.utils; +package com.tianhua.codemaker.utils; /** * description: Constant
diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreeMarkerUtil.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreeMarkerUtil.java similarity index 98% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreeMarkerUtil.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreeMarkerUtil.java index f48ce4d..ef49309 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreeMarkerUtil.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreeMarkerUtil.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.utils; +package com.tianhua.codemaker.utils; import com.google.common.collect.Maps; import freemarker.template.Configuration; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreemarkerUtils.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreemarkerUtils.java similarity index 95% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreemarkerUtils.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreemarkerUtils.java index 2641c19..addfe4b 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/FreemarkerUtils.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/FreemarkerUtils.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.utils; +package com.tianhua.codemaker.utils; import freemarker.template.Configuration; import freemarker.template.Template; diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/ResultDto.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/ResultDto.java similarity index 93% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/ResultDto.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/ResultDto.java index 8eace43..84c07bd 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/ResultDto.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/ResultDto.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.utils; +package com.tianhua.codemaker.utils; /** * description: ResultDto
diff --git a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/SpringContextHolder.java b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/SpringContextHolder.java similarity index 97% rename from codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/SpringContextHolder.java rename to codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/SpringContextHolder.java index 0b99ca0..259c856 100644 --- a/codemaker-parent/codemaker-core/src/main/java/com/coderman/codemaker/utils/SpringContextHolder.java +++ b/codemaker-parent/codemaker-core/src/main/java/com/tianhua/codemaker/utils/SpringContextHolder.java @@ -1,4 +1,4 @@ -package com.coderman.codemaker.utils; +package com.tianhua.codemaker.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; -- Gitee From a66e1439ac8429ca4975a6707f81bd261aa891cf Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:18:10 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.properties | 21 +- .../annotationClass/IdemPotent.properties | 5 + .../annotationClass/LockA.properties | 5 + .../annotationClass/MqHandler.properties | 5 + .../annotationClass/Transactional.properties | 5 + .../TransactionalEventListener.properties | 5 + .../component/apiresult/apiresult.properties | 2 +- .../component/liteflow/config.properties | 1 + .../component/liteflow/liteflow.properties | 15 + .../mybatis-plus/mybatis-plus.properties | 4 + .../component/rocketmq/config.properties | 25 ++ .../component/rocketmq/rocketmq.properties | 4 + .../singleClass/BaseEvent.properties | 2 + .../component/singleClass/PageBO.properties | 2 + .../component/snakeyaml/snakeyaml.properties | 2 + .../springboot-redis/config.properties | 18 + .../springboot-redis.properties | 3 + .../springboot-test.properties | 3 + .../springboot/springboot.properties | 16 +- .../springcloud-eureka/config.properties | 9 + .../springcloud-eureka.properties | 3 + .../component/springcloud-gataway/config.yml | 12 + .../springcloud-gataway.properties | 3 + .../springcloud-ribbon.properties | 3 + .../springcloudalibaba-nacosconfig/config.yml | 12 + .../springcloudalibaba-nacosconfig.properties | 3 + ...ringcloudalibaba-nacosdiscovery.properties | 2 + .../springcloudalibaba-rocketmq/config.yml | 19 ++ .../springcloudalibaba-rocketmq.properties | 4 + .../springcloudalibaba-seata/config.yml | 65 ++++ .../springcloudalibaba-seata.properties | 3 + .../springcloudalibaba-sentinel/config.yml | 13 + .../springcloudalibaba-sentinel.properties | 3 + .../infosys-auth/auth-domainV3.puml | 17 +- .../infosys-auth/auth-domainV5.puml | 78 +++-- .../infosys-express/express-domain-V2.puml | 33 ++ .../infosys-express/express-domain.puml | 317 ++++++++++++++++++ .../infosys-auth/infosys_auth.puml | 164 +++++++++ .../infosys-express/infosys_express.puml | 109 ++++++ .../{api-json/readme => er-plantuml/xxx} | 0 .../invoke-plantuml/AuthorityRepository.puml | 24 ++ .../SystemModuleRepository.puml | 22 ++ .../infosys-auth/datacolumncontextseq.puml | 2 +- .../infosys-express/createorder.puml | 14 + .../main/resources/invoke-plantuml/role.puml | 21 ++ .../src/main/resources/mapper/sqlMapper.xml | 6 +- .../resources/projecttemplate-cola.properties | 58 +++- .../projecttemplate-dubbo.properties | 50 ++- .../projecttemplate-dynamicddd.properties | 4 +- .../projecttemplate-springboot.properties | 45 ++- .../projecttemplate-springcloud.properties | 36 +- .../template/applicationproperties.ftl | 2 +- .../resources/template/cola/adapterpom.ftl | 117 +++++++ .../main/resources/template/cola/apppom.ftl | 135 ++++++++ .../src/main/resources/template/cola/bo.ftl | 2 +- .../main/resources/template/cola/boddd.ftl | 1 + .../resources/template/cola/clientpom.ftl | 60 ++++ .../src/main/resources/template/cola/cmp.ftl | 32 ++ .../resources/template/cola/controller.ftl | 8 +- .../resources/template/cola/controllerddd.ftl | 8 +- .../resources/template/cola/doboconvert.ftl | 30 ++ .../resources/template/cola/domainpom.ftl | 57 ++++ .../src/main/resources/template/cola/dto.ftl | 2 +- .../resources/template/cola/dtoboconvert.ftl | 30 ++ .../main/resources/template/cola/dtoddd.ftl | 8 +- .../main/resources/template/cola/event.ftl | 1 + .../main/resources/template/cola/exeimpl.ftl | 6 + .../main/resources/template/cola/facade.ftl | 4 +- .../resources/template/cola/facadeimpl.ftl | 4 +- .../resources/template/cola/facadeimplddd.ftl | 6 + .../resources/template/cola/feignapipom.ftl | 90 +++++ .../template/cola/feignproviderpom.ftl | 99 ++++++ .../resources/template/cola/infrastpom.ftl | 130 +++++++ .../resources/template/cola/mapperddd.ftl | 2 +- .../resources/template/cola/mapperxml.ftl | 10 +- .../resources/template/cola/mapperxmlddd.ftl | 28 -- .../resources/template/cola/mqconsumer.ftl | 6 + .../resources/template/cola/mqhandler.ftl | 1 + .../resources/template/cola/mqlistener.ftl | 7 + .../resources/template/cola/mqproducer.ftl | 10 +- .../resources/template/cola/parentpom.ftl | 255 ++++++++++++++ .../main/resources/template/cola/service.ftl | 4 +- .../resources/template/cola/serviceImpl.ftl | 6 +- .../resources/template/cola/serviceddd.ftl | 20 ++ .../main/resources/template/cola/startpom.ftl | 83 +++++ .../main/resources/template/cola/testddd.ftl | 110 ++++++ .../resources/template/cola/validator.ftl | 34 ++ .../src/main/resources/template/cola/vo.ftl | 2 +- .../resources/template/cola/voboconvert.ftl | 30 ++ .../main/resources/template/cola/voddd.ftl | 7 +- .../config/application_properties.ftl | 19 ++ .../template/config/application_yml.ftl | 23 ++ .../template/config/liteflow_properties.ftl | 1 + .../template/config/log4j_properties.ftl | 10 + .../resources/template/config/log4j_xml.ftl | 117 +++++++ .../template/config/mybatis-config_xml.ftl | 41 +++ .../main/resources/template/dubbo/apipom.ftl | 60 ++++ .../template/dubbo/applicationproperties.ftl | 2 +- .../src/main/resources/template/dubbo/bo.ftl | 2 +- .../main/resources/template/dubbo/boddd.ftl | 1 + .../src/main/resources/template/dubbo/cmp.ftl | 32 ++ .../resources/template/dubbo/commonpom.ftl | 119 +++++++ .../main/resources/template/dubbo/corepom.ftl | 143 ++++++++ .../resources/template/dubbo/doboconvert.ftl | 30 ++ .../resources/template/dubbo/dtoboconvert.ftl | 30 ++ .../main/resources/template/dubbo/dtoddd.ftl | 22 +- .../main/resources/template/dubbo/exeimpl.ftl | 6 + .../resources/template/dubbo/facadeImpl.ftl | 2 +- .../template/dubbo/facadeimplddd.ftl | 9 +- .../main/resources/template/dubbo/mapper.ftl | 4 +- .../resources/template/dubbo/mapperddd.ftl | 2 +- .../resources/template/dubbo/mapperxml.ftl | 10 +- .../resources/template/dubbo/mapperxmlddd.ftl | 27 -- .../resources/template/dubbo/mqconsumer.ftl | 6 + .../resources/template/dubbo/mqlistener.ftl | 7 + .../resources/template/dubbo/mqproducer.ftl | 10 +- .../resources/template/dubbo/parentpom.ftl | 226 +++++++++++++ .../main/resources/template/dubbo/service.ftl | 4 +- .../resources/template/dubbo/serviceImpl.ftl | 8 +- .../resources/template/dubbo/serviceddd.ftl | 20 ++ .../main/resources/template/dubbo/test.ftl | 7 +- .../main/resources/template/dubbo/testddd.ftl | 51 +++ .../resources/template/dubbo/validator.ftl | 34 ++ .../template/fast/applicationproperties.ftl | 2 +- .../resources/template/fast/controller.ftl | 8 +- .../template/singleClass/Application.ftl | 4 - .../template/singleClass/IdemPotent.ftl | 28 ++ .../resources/template/singleClass/LockA.ftl | 37 ++ .../template/singleClass/MqHandler.ftl | 37 ++ .../resources/template/singleClass/PageBO.ftl | 290 +--------------- .../template/singleClass/ValidationUtils.ftl | 44 +++ .../springboot/applicationproperties.ftl | 2 +- .../resources/template/springboot/boddd.ftl | 1 + .../resources/template/springboot/cmp.ftl | 32 ++ .../template/springboot/controller.ftl | 2 + .../template/springboot/controllerddd.ftl | 8 +- .../template/springboot/doboconvert.ftl | 30 ++ .../template/springboot/dtoboconvert.ftl | 30 ++ .../resources/template/springboot/dtoddd.ftl | 5 + .../resources/template/springboot/exeimpl.ftl | 6 + .../template/springboot/facadeimplddd.ftl | 43 +++ .../resources/template/springboot/mapper.ftl | 2 +- .../template/springboot/mapperddd.ftl | 2 +- .../template/springboot/mapperxml.ftl | 8 +- .../template/springboot/mapperxmlddd.ftl | 27 -- .../template/springboot/mqconsumer.ftl | 7 + .../template/springboot/mqhandler.ftl | 1 + .../template/springboot/mqlistener.ftl | 7 + .../template/springboot/mqproducer.ftl | 10 +- .../resources/template/springboot/msgbody.ftl | 1 + .../template/springboot/parentpom.ftl | 204 +++++++++++ .../template/springboot/serviceImpl.ftl | 6 +- .../template/springboot/serviceddd.ftl | 20 ++ .../resources/template/springboot/test.ftl | 10 +- .../resources/template/springboot/testddd.ftl | 51 +++ .../template/springboot/validator.ftl | 34 ++ .../template/springboot/voboconvert.ftl | 30 ++ .../resources/template/springboot/voddd.ftl | 1 + .../resources/template/springcloud/apipom.ftl | 60 ++++ .../springcloud/applicationproperties.ftl | 2 +- .../resources/template/springcloud/boddd.ftl | 1 + .../template/springcloud/controllerddd.ftl | 10 +- .../resources/template/springcloud/dtoddd.ftl | 5 + .../template/springcloud/exeimpl.ftl | 6 + .../template/springcloud/mapperddd.ftl | 2 +- .../template/springcloud/mapperxmlddd.ftl | 28 -- .../template/springcloud/mqconsumer.ftl | 6 + .../template/springcloud/mqlistener.ftl | 6 + .../template/springcloud/mqproducer.ftl | 9 +- .../template/springcloud/parentpom.ftl | 196 +++++++++++ .../template/springcloud/providerpom.ftl | 122 +++++++ .../template/springcloud/serviceddd.ftl | 20 ++ .../template/springcloud/validator.ftl | 34 ++ .../resources/template/springcloud/voddd.ftl | 1 + .../resources/template/cola/abstractexe.ftl | 30 ++ .../src/test/resources/template/cola/acl.ftl | 23 ++ .../test/resources/template/cola/aclimpl.ftl | 39 +++ .../resources/template/dubbo/abstractexe.ftl | 30 ++ .../src/test/resources/template/dubbo/acl.ftl | 23 ++ .../test/resources/template/dubbo/aclimpl.ftl | 39 +++ .../template/dynamicddd/abstractexe.ftl | 30 ++ .../resources/template/dynamicddd/acl.ftl | 23 ++ .../resources/template/springboot/acl.ftl | 23 ++ .../resources/template/springboot/aclimpl.ftl | 39 +++ .../resources/template/springcloud/acl.ftl | 23 ++ .../template/springcloud/aclimpl.ftl | 39 +++ 186 files changed, 5152 insertions(+), 576 deletions(-) create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/IdemPotent.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/LockA.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/MqHandler.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/Transactional.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/TransactionalEventListener.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/liteflow/config.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/liteflow/liteflow.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/mybatis-plus/mybatis-plus.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/config.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/rocketmq.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/singleClass/BaseEvent.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/singleClass/PageBO.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/snakeyaml/snakeyaml.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/config.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/springboot-redis.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springboot-test/springboot-test.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/config.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/springcloud-eureka.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/config.yml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/springcloud-gataway.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloud-ribbon/springcloud-ribbon.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/config.yml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/springcloudalibaba-nacosconfig.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosdiscovery/springcloudalibaba-nacosdiscovery.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/config.yml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/springcloudalibaba-rocketmq.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/config.yml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/springcloudalibaba-seata.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/config.yml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/springcloudalibaba-sentinel.properties create mode 100644 codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain-V2.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-auth/infosys_auth.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-express/infosys_express.puml rename codemaker-parent/codemaker-core/src/main/resources/{api-json/readme => er-plantuml/xxx} (100%) create mode 100644 codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/AuthorityRepository.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/SystemModuleRepository.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-express/createorder.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/role.puml create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/adapterpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/apppom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/clientpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/cmp.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/doboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/domainpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/feignapipom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/feignproviderpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/infrastpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/parentpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/startpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/testddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/validator.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/cola/voboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/application_properties.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/application_yml.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/liteflow_properties.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_properties.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_xml.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/config/mybatis-config_xml.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/apipom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/cmp.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/commonpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/corepom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/doboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/parentpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/testddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/dubbo/validator.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/singleClass/IdemPotent.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/singleClass/LockA.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/singleClass/MqHandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/singleClass/ValidationUtils.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/cmp.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/doboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/facadeimplddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/parentpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/testddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/validator.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springboot/voboconvert.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springcloud/apipom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springcloud/parentpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springcloud/providerpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springcloud/serviceddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/main/resources/template/springcloud/validator.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/abstractexe.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/acl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/aclimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/abstractexe.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/acl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/aclimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/abstractexe.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/acl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/acl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/aclimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/acl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/aclimpl.ftl diff --git a/codemaker-parent/codemaker-core/src/main/resources/application.properties b/codemaker-parent/codemaker-core/src/main/resources/application.properties index b68ab22..6e49966 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/application.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/application.properties @@ -22,9 +22,9 @@ server.port=8099 #数据库配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/infosys_auth?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC -spring.datasource.username= -spring.datasource.password= +spring.datasource.url=jdbc:mysql://localhost:3306/infosys_express?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root #配置.xml文件路径 mybatis.config-locations=classpath:mybatis-config.xml @@ -33,16 +33,21 @@ mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.coderman.codemaker.bean spring.application.name=codemaker #生成的应用类型,支持springboot,dubbo,cola,springcloud -application.type=cola +application.type=dubbo #目标应用根包名称 -application.global.package=com.coderman.infosys.auth +application.global.package=com.coderman.infosys.express #作者 application.global.author=shenshuai +#是否链接目标数据库,默认是,不链接则需要在resources/er-plantuml文件夹下创建对应项目应用的plantuml e-r图文档, +#内部融合了codemaker-dberparse模块的功能可以解析并实现不链接具体应用的数据库而实现代码生成 +#application.global.linkdb=true +application.global.linkdb=true + #组件化需要的maven repository本地路径,用来扫描依赖的组件jar包 -application.maven.repo.path=jar:file:///Users/shenshuia/.m2/repository +application.maven.repo.path=jar:file:///Users/shenshuai/programfile/maven/repo #代码生成需要的全局组件,框架中间件可以放到全局组件依赖配置里,类似于脚手架,或者自己封装的业务组件框架 application.component.scan.config=dubbo,spring-web,openfeign @@ -52,3 +57,7 @@ application.component.scan.bean=defaultCompScanService #自定义的组件装饰bean,defaultCompDecorateService默认实现支持全局组件的装饰,开发者可以参考进行自定义扫描组件实现替代掉默认的 application.component.decorate.bean=defaultCompDecorateService + +#是否启用javs脚本来辅助代码生成,默认为false +application.javsscript.enable=false + diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/IdemPotent.properties b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/IdemPotent.properties new file mode 100644 index 0000000..b414326 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/IdemPotent.properties @@ -0,0 +1,5 @@ +packageName=${package}.domain.support.annotations +classAlias=@I +annotation=@IdemPotent(key = "requestNo") +#value is this,child +modifyOn=child \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/LockA.properties b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/LockA.properties new file mode 100644 index 0000000..15a0edb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/LockA.properties @@ -0,0 +1,5 @@ +packageName=${package}.domain.support.annotations +classAlias=@L +annotation=@Lock(key = "requestNo") +#value is this,child +modifyOn=child \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/MqHandler.properties b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/MqHandler.properties new file mode 100644 index 0000000..3b2f7cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/MqHandler.properties @@ -0,0 +1,5 @@ +packageName=${package}.domain.support.annotations +classAlias=@M +annotation=@MqHandler(key = "xxx") +#value is this,child +modifyOn=child \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/Transactional.properties b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/Transactional.properties new file mode 100644 index 0000000..dd7d1f7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/Transactional.properties @@ -0,0 +1,5 @@ +packageName=org.springframework.transaction.annotation +classAlias=@T +annotation=@Transactional(rollbackFor = Exception.class) +#value is this,child +modifyOn=child \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/TransactionalEventListener.properties b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/TransactionalEventListener.properties new file mode 100644 index 0000000..1ff552f --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/annotationClass/TransactionalEventListener.properties @@ -0,0 +1,5 @@ +packageName=org.springframework.transaction.event.TransactionalEventListener +classAlias=@TE +annotation=@TransactionalEventListener(fallbackExecution = true) +#value is this,child +modifyOn=child \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/apiresult/apiresult.properties b/codemaker-parent/codemaker-core/src/main/resources/component/apiresult/apiresult.properties index 6718294..e54dc67 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/component/apiresult/apiresult.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/component/apiresult/apiresult.properties @@ -1,6 +1,6 @@ #Generated by Maven #Fri Sep 20 00:50:48 CST 2019 -version=1.0.4 +version=1.0.5-SNAPSHOT groupId=com.coderman.utils artifactId=coderman-utils class1=com.coderman.utils.response.ResultDataDto diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/config.properties b/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/config.properties new file mode 100644 index 0000000..ba6bbe6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/config.properties @@ -0,0 +1 @@ +liteflow.ruleSource=liteflow/flow.xml diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/liteflow.properties b/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/liteflow.properties new file mode 100644 index 0000000..e9f01fd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/liteflow/liteflow.properties @@ -0,0 +1,15 @@ +version=2.6.10 +groupId=com.yomahub +artifactId=liteflow-core +#application??config.yml?????????application.properties???? +#configName=application +#liteflow?????liteflow?????????application.properties???????????? +#???template/config?????liteflow_properties.ftl??liteflow_yml.ftl +configName=liteflow + +class1=com.yomahub.liteflow.entity.data.AbsSlot +class2=com.yomahub.liteflow.core.NodeComponent +NodeComponent.method1=public abstract void process() throws Exception +NodeComponent.method2=public boolean isAccess() +NodeComponent.field1=private MonitorBus monitorBus +NodeComponent.field2=private NodeComponent self diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/mybatis-plus/mybatis-plus.properties b/codemaker-parent/codemaker-core/src/main/resources/component/mybatis-plus/mybatis-plus.properties new file mode 100644 index 0000000..2917187 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/mybatis-plus/mybatis-plus.properties @@ -0,0 +1,4 @@ +version=3.5.1 +groupId=com.baomidou +artifactId=mybatis-plus-core +interface1=com.baomidou.mybatisplus.core.mapper.BaseMapper diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/config.properties b/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/config.properties new file mode 100644 index 0000000..f218356 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/config.properties @@ -0,0 +1,25 @@ +# ???????? +rocketmq.producer.isOnOff=on +# ?????????????group?????????????rocketmq???ip@pid?pid??jvm????????? +rocketmq.producer.groupName=${spring.application.name} +# mq?nameserver?? +rocketmq.producer.namesrvAddr=127.0.0.1:9876 +# ?????? ?? 1024 * 4 (4M) +rocketmq.producer.maxMessageSize = 4096 +# ??????????? 3000 +rocketmq.producer.sendMsgTimeOut=3000 +# ?????????????2 +rocketmq.producer.retryTimesWhenSendFailed=2 +# ???????? +rocketmq.consumer.isOnOff=on +# ?????????????group?????????????rocketmq???ip@pid?pid??jvm????????? +rocketmq.consumer.groupName=${spring.application.name} +# mq?nameserver?? +rocketmq.consumer.namesrvAddr=127.0.0.1:9876 +# ????????topic?tags?*???????????tags????: topic~tag1||tag2||tags3; +rocketmq.consumer.topics=TestTopic~TestTag;TestTopic~HelloTag;HelloTopic~HelloTag;MyTopic~* +# ???????? +rocketmq.consumer.consumeThreadMin=5 +rocketmq.consumer.consumeThreadMax=32 +# ??????????????1 +rocketmq.consumer.consumeMessageBatchMaxSize=1 \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/rocketmq.properties b/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/rocketmq.properties new file mode 100644 index 0000000..d1d4942 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/rocketmq/rocketmq.properties @@ -0,0 +1,4 @@ +version=4.7.0 +groupId=org.apache.rocketmq +artifactId=rocketmq-client +configName=application \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/BaseEvent.properties b/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/BaseEvent.properties new file mode 100644 index 0000000..ace596e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/BaseEvent.properties @@ -0,0 +1,2 @@ +packageName=${package}.domain.event +classType=class \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/PageBO.properties b/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/PageBO.properties new file mode 100644 index 0000000..d54698b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/singleClass/PageBO.properties @@ -0,0 +1,2 @@ +packageName=${package}.domain.bo +classType=class \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/snakeyaml/snakeyaml.properties b/codemaker-parent/codemaker-core/src/main/resources/component/snakeyaml/snakeyaml.properties new file mode 100644 index 0000000..f2a9e8e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/snakeyaml/snakeyaml.properties @@ -0,0 +1,2 @@ +groupId=org.yaml +artifactId=snakeyaml diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/config.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/config.properties new file mode 100644 index 0000000..2c9a9a9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/config.properties @@ -0,0 +1,18 @@ +# Redis?????????0? +spring.redis.database=0 +# Redis????? +spring.redis.host=127.0.0.1 +# Redis??????? +spring.redis.port=6379 +# Redis????????????? +spring.redis.password= +# ???????????????????? +spring.redis.jedis.pool.max-active=20 +# ??????????????????????? +spring.redis.jedis.pool.max-wait=-1 +# ??????????? +spring.redis.jedis.pool.max-idle=10 +# ??????????? +spring.redis.jedis.pool.min-idle=0 +# ?????????? +spring.redis.timeout=1000 diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/springboot-redis.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/springboot-redis.properties new file mode 100644 index 0000000..53cbcff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-redis/springboot-redis.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.boot +artifactId=spring-boot-starter-data-redis +configName=application \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springboot-test/springboot-test.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-test/springboot-test.properties new file mode 100644 index 0000000..ca6b8dd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springboot-test/springboot-test.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.boot +artifactId=spring-boot-starter-test +scope=test \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springboot/springboot.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springboot/springboot.properties index 7efe2bc..f9fec0f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/component/springboot/springboot.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springboot/springboot.properties @@ -1,11 +1,5 @@ -#Generated by Maven -#Fri Sep 20 00:50:48 CST 2019 -version=1.2.61 -groupId=com.alibaba -artifactId=fastjson -packageName=com.alibaba.fastjson -class1=JSON -class2=com.alibaba.fastjson.spi.Module - - - +version=2.1.9.RELEASE +groupId=org.springframework.boot +artifactId=spring-boot-dependencies +type=pom +scope=import diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/config.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/config.properties new file mode 100644 index 0000000..dc3fa8a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/config.properties @@ -0,0 +1,9 @@ +# ????????????????true +# ?Eureka???????????????????????????????????????? +eureka.server.enable-self-preservation=false + +# Peer???????????? +eureka.server.peer-eureka-nodes-update-interval-ms= + +# Eureka????????????????????????60000??60? +eureka.server.eviction-interval-timer-in-ms=60000 \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/springcloud-eureka.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/springcloud-eureka.properties new file mode 100644 index 0000000..7fee4da --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-eureka/springcloud-eureka.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.cloud +artifactId=spring-cloud-starter-eureka-server +configName=application \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/config.yml b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/config.yml new file mode 100644 index 0000000..c8018b4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/config.yml @@ -0,0 +1,12 @@ +spring: + gateway: + discovery: + locator: + enabled: false # ???????????????false ???? + lowerCaseServiceId: false # ????????????????????false????? + httpclient: #http???? + pool: + max-connections: 5000 #????? + # max-life-time: 45000 #?????? + acquire-timeout: 15000 #???? + max-idle-time: 10000 #?????? \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/springcloud-gataway.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/springcloud-gataway.properties new file mode 100644 index 0000000..d5e9632 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-gataway/springcloud-gataway.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.cloud +artifactId=spring-cloud-starter-gateway +configName=application \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-ribbon/springcloud-ribbon.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-ribbon/springcloud-ribbon.properties new file mode 100644 index 0000000..3a1e637 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloud-ribbon/springcloud-ribbon.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.cloud +artifactId=spring-cloud-starter-netflix-ribbon +configName= \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/config.yml b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/config.yml new file mode 100644 index 0000000..6dc1ce5 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/config.yml @@ -0,0 +1,12 @@ +spring: + cloud: + nacos: + # ?????nacos.core.auth.enabled=true ????? + username: ${nacos.username} + password: ${nacos.password} + config: + server-addr: ${nacos.server-addr} + namespace: ${nacos.namespace} + prefix: nacos-config-base + file-extension: yaml + group: SPRING_CLOUD_EXAMPLE_GROUP \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/springcloudalibaba-nacosconfig.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/springcloudalibaba-nacosconfig.properties new file mode 100644 index 0000000..3b269ca --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosconfig/springcloudalibaba-nacosconfig.properties @@ -0,0 +1,3 @@ +groupId=com.alibaba.cloud +artifactId=spring-cloud-starter-alibaba-nacos-config +configName=bootstrap \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosdiscovery/springcloudalibaba-nacosdiscovery.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosdiscovery/springcloudalibaba-nacosdiscovery.properties new file mode 100644 index 0000000..bc38ed2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-nacosdiscovery/springcloudalibaba-nacosdiscovery.properties @@ -0,0 +1,2 @@ +groupId=com.alibaba.cloud +artifactId=spring-cloud-starter-alibaba-nacos-discovery \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/config.yml b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/config.yml new file mode 100644 index 0000000..46f7a61 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/config.yml @@ -0,0 +1,19 @@ +spring: + cloud: + stream: + rocketmq: + binder: + name-server: 127.0.0.1:9876 + bindings: + input: + consumer: + enabled: true # 是否开启消费,默认为 true + broadcasting: true # 是否使用广播消费,默认为 false(使用集群消费) + bindings: + output: + destination: test-topic + content-type: application/json + input: + destination: test-topic + content-type: application/json + group: test-group \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/springcloudalibaba-rocketmq.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/springcloudalibaba-rocketmq.properties new file mode 100644 index 0000000..5cbec3b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-rocketmq/springcloudalibaba-rocketmq.properties @@ -0,0 +1,4 @@ +groupId=com.alibaba.cloud +artifactId=spring-cloud-starter-stream-rocketmq +configName=rocketmq +exclusionGAList=ch.qos.logback:logback-classic,ch.qos.logback:logback-core diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/config.yml b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/config.yml new file mode 100644 index 0000000..0949abb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/config.yml @@ -0,0 +1,65 @@ +seata: + enabled: true + application-id: #自己服务ID + tx-service-group: test_tx_group + enable-auto-data-source-proxy: true + use-jdk-proxy: false + excludes-for-auto-proxying: firstClassNameForExclude,secondClassNameForExclude + client: + rm: + async-commit-buffer-limit: 1000 + report-retry-count: 5 + table-meta-check-enable: false + report-success-enable: false + saga-branch-register-enable: false + lock: + retry-interval: 10 + retry-times: 30 + retry-policy-branch-rollback-on-conflict: true + tm: + commit-retry-count: 5 + rollback-retry-count: 5 + undo: + data-validation: true + log-serialization: jackson + log-table: undo_log + log: + exceptionRate: 100 + service: + vgroup-mapping: + renren_tx_group: default + enable-degrade: false + disable-global-transaction: false + transport: + shutdown: + wait: 3 + thread-factory: + boss-thread-prefix: NettyBoss + worker-thread-prefix: NettyServerNIOWorker + server-executor-thread-prefix: NettyServerBizHandler + share-boss-worker: false + client-selector-thread-prefix: NettyClientSelector + client-selector-thread-size: 1 + client-worker-thread-prefix: NettyClientWorkerThread + worker-thread-size: default + boss-thread-size: 1 + type: TCP + server: NIO + heartbeat: true + serialization: seata + compressor: none + enable-client-batch-send-request: true + config: + type: file + registry: + type: nacos + nacos: + application: seata-server + #修改对应端口 + server-addr: localhost:8849 + #修改对应namespace + namespace: d3cca02c-6317-474d-bced-6715cf3fa658 + userName: "" + password: "" + #和服务端保持一致 + group: seata_group \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/springcloudalibaba-seata.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/springcloudalibaba-seata.properties new file mode 100644 index 0000000..a4ec28c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-seata/springcloudalibaba-seata.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.cloud +artifactId=spring-cloud-starter-alibaba-seata +configName= \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/config.yml b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/config.yml new file mode 100644 index 0000000..d66285b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/config.yml @@ -0,0 +1,13 @@ +spring: + cloud: + sentinel: + transport: + dashboard: localhost:8080 + datasource: + ds: + nacos: + server-addr: http://***** + groupId: DEFAULT_GROUP + dataId: provider-sentinel + namespace: 725d62dc-11f8-451d-ac7e-04427536de08 + rule-type: flow \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/springcloudalibaba-sentinel.properties b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/springcloudalibaba-sentinel.properties new file mode 100644 index 0000000..a4ec28c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/component/springcloudalibaba-sentinel/springcloudalibaba-sentinel.properties @@ -0,0 +1,3 @@ +groupId=org.springframework.cloud +artifactId=spring-cloud-starter-alibaba-seata +configName= \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV3.puml b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV3.puml index 0e043a5..c56b653 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV3.puml +++ b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV3.puml @@ -448,7 +448,7 @@ package app.command { package app.exe { interface "命令执行接口-CmdExeService" as CmdExeService{ - 命令执行入口:String exe(AbstractCmd abstractCmd) + 命令执行入口:String exe(AbstractCmd abstractCmd).@T.@L } class "用户组cmd处理类-UserGroupCmdExe" as UserGroupCmdExe{ @@ -479,30 +479,29 @@ package app.exe { package "应用层事件监听器包支持域内消息和域外消息,在应用层处理消息-app.listener" as app.listener{ class "权限变更监听器-AuthorityChangeListener" as AuthorityChangeListener{ - +事务提交后权限变更监听:void authorityCreate(String authCode) - +用户状态信息变更监听消费:void userStatusChange(Long userId) + +事务提交后权限变更监听:void authorityCreate(String authCode).@TE + +用户状态信息变更监听消费:void userStatusChange(Long userId).@TE } class "系统菜单按钮变更监听器-SystemChangeListener" as SystemChangeListener{ - +事务提交后权限变更监听:void systemChange(MenuChangeEvent event) + +事务提交后权限变更监听:void systemChange(MenuChangeEvent event).@TE } } - package "基础设施层消息生产者-mq.producer" as mq.producer { class "权限上下文消息生产者-AuthorityMqProducer" as AuthorityMqProducer{ - +权限创建:void authorityCreate(String authCode) - +权限更新:void authorityUpdate(String authCode) + +权限创建:void authorityCreate(String authCode).@TE + +权限更新:void authorityUpdate(String authCode).@TE } class "系统上下文消息生产者-SystemMqProducer" as SystemMqProducer{ - +事务提交后权限变更监听:void systemChange(MenuChangeEvent event) + +事务提交后权限变更监听:void systemChange(MenuChangeEvent event).@TE } } package "基础设施层消息消费者-mq.consumer" as mq.consumer { - class "用户上下文消息消费者或者监听-UserMqConsumer" as UserMqConsumer{ + class "用户上下文消息消费者或者监听-UserMqConsumer.@M" as UserMqConsumer{ +监听用户状态变更:void consumeUserStatusChange(String mqBody) } class "组织上下文消息消费者或者监听-DepartmentMqConsumer" as DepartmentMqConsumer{ diff --git a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV5.puml b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV5.puml index d586594..ac8ec57 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV5.puml +++ b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-auth/auth-domainV5.puml @@ -59,17 +59,17 @@ package domain.bo { 分页获取用户组信息: PageDTO UserGroupQueryFacade.getPageList() - 创建用户组: UserGroupDTO UserGroupFacade.createUserGroup(CreateUserGroupRequestDTO createUserGroupRequestDTO) - 修改用户组信息: Boolean UserGroupFacade.updateUserGroup(UpdateUserGroupRequestDTO updateUserGroupRequestDTO) - 设置用户组状态: Boolean UserGroupFacade.updateUserGroupStatus(String groupCode,Integer status) + 创建用户组: UserGroupDTO UserGroupFacade.createUserGroup(CreateUserGroupRequestDTO createUserGroupRequestDTO).@I + 修改用户组信息: Boolean UserGroupFacade.updateUserGroup(UpdateUserGroupRequestDTO updateUserGroupRequestDTO).@I + 设置用户组状态: Boolean UserGroupFacade.updateUserGroupStatus(String groupCode,Integer status).@I 根据code获取用户组详情: UserGroupDTO UserGroupQueryFacade.getByGroupCode(String groupCode) 根据code或者名称搜索用户组信息: List UserGroupQueryFacade.search(String search) 分页获取用户组信息/usergroup/pagelist: PageVO userGroupQueryController.getPageList(PageVO pageVO ) - 创建用户组/usergroup/create: UserGroupVO UserGroupController.createUserGroup(CreateUserGroupRequestVO createUserGroupRequestVO) - 修改用户组信息/usergroup/upate: Boolean UserGroupController.updateUserGroup(UpdateUserGroupRequestVO updateUserGroupRequestVO) - 设置用户组状态/usergroup/changestatus: Boolean UserGroupController.updateUserGroupStatus(String groupCode,Integer status) + 创建用户组/usergroup/create: UserGroupVO UserGroupController.createUserGroup(CreateUserGroupRequestVO createUserGroupRequestVO).@I + 修改用户组信息/usergroup/upate: Boolean UserGroupController.updateUserGroup(UpdateUserGroupRequestVO updateUserGroupRequestVO).@I + 设置用户组状态/usergroup/changestatus: Boolean UserGroupController.updateUserGroupStatus(String groupCode,Integer status).@I 根据code获取用户组详情/usergroup/detail: UserGroupDTO UserGroupQueryController.getByGroupCode(String groupCode) 根据code或者名称搜索用户组信息/usergroup/search: List UserGroupQueryController.search(String search) @@ -105,19 +105,22 @@ package domain.bo { queryVoKey:RoleQueryVO String roleCode,String roleCode,Integer status contextKey:String role - + validateKey:String roleName,roleCode !invokeFileKey:String rolecontextseq.puml - 创建角色/role/create: RoleVO RoleController.createRole(CreateRoleRequestVO createRoleRequestVO) + + + + 创建角色/role/create: RoleVO RoleController.createRole(CreateRoleRequestVO createRoleRequestVO).@I.@T 根据编码获取角色详情/role/getbyrolecode: RoleVO RoleQueryController.getByRoleCode(String roleCode) - 禁用角色/role/disable: Boolean RoleController.disable(String roleCode) - 启用角色/role/enable: Boolean RoleController.enable(String roleCode) + 禁用角色/role/disable: Boolean RoleController.disable(String roleCode).@I.@T + 启用角色/role/enable: Boolean RoleController.enable(String roleCode).@I.@T 分页获取角色信息/role/pagelist: PageVO RoleQueryController.getPageList(PageVO pageVO) - 角色关联用户/role/relatetouser: Boolean RoleController.relateToUser(String userIds) + 角色关联用户/role/relatetouser: Boolean RoleController.relateToUser(String userIds).@I.@T 分页获取角色信息: PageDTO RoleQueryFacade.getPageList(PageDTO pageDTO) - 创建角色: RoleDTO RoleFacade.createRole(CreateRoleRequestDTO createRoleRequestDTO) - 修改角色信息: Boolean RoleFacade.updateRole(UpdateRoleRequestDTO updateRoleRequestDTO) + 创建角色: RoleDTO RoleFacade.createRole(CreateRoleRequestDTO createRoleRequestDTO).@I.@T + 修改角色信息: Boolean RoleFacade.updateRole(UpdateRoleRequestDTO updateRoleRequestDTO).@I.@T 设置角色状态: Boolean RoleFacade.updateRoleStatus(String groupCode,Integer status) 根据code获取角色详情: RoleDTO RoleQueryFacade.getByRoleCode(String groupCode) 根据code或者名称搜索角色信息: List RoleQueryFacade.search(String search) @@ -125,8 +128,8 @@ package domain.bo { } class "角色组-RoleGroupBO" as RoleGroupBO{ - 角色组名称:String roleName - 角色组编码:String roleCode + 角色组名称:String roleGroupName + 角色组编码:String roleGroupCode 组内角色列表:List roleList 角色状态:Integer status .. extend info .. @@ -145,6 +148,7 @@ package domain.bo { contextKey:String role + validateKey:String roleGroupName,roleGroupCode 创建角色组/rolegroup/create: RoleVO RoleGroupController.createRole(CreateRoleGroupRequestVO createRoleRequestVO) @@ -194,7 +198,7 @@ package domain.bo { 根据用户和系统获取系统权限信息: AuthorityDTO AuthorityQueryFacade.getUserSystemAuth(Long userId,String systemCode) 根据权限code获取权限信息: AuthorityDTO AuthorityQueryFacade.getByCode(String authCode) 分页获取权限信息: PageDTO AuthorityQueryFacade.getPageList(String authCode) - 给角色授权: AuthorityDTO AuthorityFacade.saveAuthority(CreateAuthorityRequestDTO createAuthorityRequestDTO) + 给角色授权: AuthorityDTO AuthorityFacade.saveAuthority(CreateAuthorityRequestDTO createAuthorityRequestDTO).@I.@T 修改授权信息: Boolean AuthorityFacade.updateAuthority(UpdateAuthorityRequestDTO updateAuthorityRequestDTO) @@ -260,7 +264,7 @@ package domain.bo { 获取系统菜单权限信息: SystemAuthorityDTO SystemAuthorityQueryFacade.getByCode(String authCode) - 给角色授权系统菜单权限: DataAuthorityDTO SystemAuthorityFacade.saveSystemAuthority(CreateSystemAuthorityRequestDTO createAuthorityRequestDTO) + 给角色授权系统菜单权限: DataAuthorityDTO SystemAuthorityFacade.saveSystemAuthority(CreateSystemAuthorityRequestDTO createAuthorityRequestDTO).@I.@T 修改角色授权系统菜单权限: Boolean SystemAuthorityFacade.saveSystemAuthority(UpdateSystemAuthorityRequestDTO createAuthorityRequestDTO) 获取系统菜单权限信息/systemauthority/getbycode: SystemAuthorityDTO SystemAuthorityQueryController.getByCode(String authCode) @@ -322,13 +326,13 @@ package domain.bo { controllerKey:String SystemController,SystemQueryController dtoKeyList:String UpdateSystemRequestDTO,SystemDTO,CreateSystemRequestDTO - voKeyList:String UpdateSystemRequestVO,SystemVO,CreateSystemRequestVO + voKeyList:String UpdateSystemRequestVO,SystemVO, queryDtoKey:SystemQueryDTO String systemName,String systemCode,Long tecAdminUserId,Long departmentId queryVoKey:SystemQueryVO String systemName,String systemCode,Long tecAdminUserId,Long departmentId contextKey:String system - + validateKey:String systemName,systemCode,departmentId invokeFileKey:String systemcontextseq.puml 注册系统: SystemDTO SystemFacade.registSystem(SystemDTO systemDTO) @@ -623,7 +627,25 @@ package "缓存包-infrast.cache" as infrast.cache { } +package app.validator{ + class "RoleValidator-角色相关校验处理服务" as RoleValidator{ + + +创建逻辑校验:void validate(UpdateRoleRequestDTO updateRoleRequestDTO) + +修改逻辑校验:void validate(CreateRoleRequestDTO createRoleRequestDTO) + + } + + class "AuthorityValidator-权限相关校验处理服务" as AuthorityValidator{ + + } + + class "SystemValidator-系统相关校验处理服务" as SystemValidator{ + +创建逻辑校验:void validate(CreateSystemRequestDTO createSystemRequestDTO) + +修改逻辑校验:void validate(UpdateSystemRequestDTO updateSystemRequestDTO) + } + +} package app.command { @@ -683,7 +705,7 @@ package app.command { package app.exe { interface "命令执行接口-CmdExeService" as CmdExeService{ - 命令执行入口:String exe(AbstractCmd abstractCmd) + 命令执行入口:String exe(AbstractCmd abstractCmd).@T } class "用户组cmd处理类-UserGroupCmdExe" as UserGroupCmdExe{ @@ -714,12 +736,12 @@ package app.exe { package "应用层事件监听器包支持域内消息和域外消息,在应用层处理消息-app.listener" as app.listener{ class "权限变更监听器-AuthorityChangeListener" as AuthorityChangeListener{ - +事务提交后权限变更监听:void authorityCreate(String authCode) - +用户状态信息变更监听消费:void userStatusChange(Long userId) + +事务提交后权限变更监听:void authorityCreate(String authCode).@TE + +用户状态信息变更监听消费:void userStatusChange(Long userId).@TE } class "系统菜单按钮变更监听器-SystemChangeListener" as SystemChangeListener{ - +事务提交后权限变更监听:void systemChange(MenuChangedEvent event) + +事务提交后权限变更监听:void systemChange(MenuChangedEvent event).@TE } } @@ -727,8 +749,8 @@ package "应用层事件监听器包支持域内消息和域外消息,在应 package "基础设施层消息生产者-mq.producer" as mq.producer { class "权限上下文消息生产者-AuthorityMqProducer" as AuthorityMqProducer{ - +权限创建:void authorityCreate(String authCode) - +权限更新:void authorityUpdate(String authCode) + +权限创建:void authorityCreate(String authCode).@TE + +权限更新:void authorityUpdate(String authCode).@TE } class "系统上下文消息生产者-SystemMqProducer" as SystemMqProducer{ @@ -737,17 +759,17 @@ package "基础设施层消息生产者-mq.producer" as mq.producer { } package "基础设施层消息消费者-mq.consumer" as mq.consumer { - class "用户上下文消息消费者或者监听-UserMqConsumer" as UserMqConsumer{ + class "用户上下文消息消费者或者监听-UserMqConsumer.@M" as UserMqConsumer{ +监听用户状态变更:void consumeUserStatusChange(String mqBody) } - class "组织上下文消息消费者或者监听-DepartmentMqConsumer" as DepartmentMqConsumer{ + class "组织上下文消息消费者或者监听-DepartmentMqConsumer.@M" as DepartmentMqConsumer{ +监听组织状态变更:void consumeDepartmentStatusChange(String mqBody) } } package "基础设施层消息消费处理器或者直接在基础设施层处理消息代码方案一-mq.handler" as mq.handler { - class "用户上下文消息处理器-UserMqHandler" as UserMqHandler{ + class "用户上下文消息处理器-UserMqHandler.@M" as UserMqHandler{ +处理用户状态变更的权限信息:void handleUserStatusChange(String mqBody) } } diff --git a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain-V2.puml b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain-V2.puml new file mode 100644 index 0000000..51ca375 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain-V2.puml @@ -0,0 +1,33 @@ +@startuml + +package domain.bo { + + class "快递订单-ExpressOrderBO" as ExpressOrderBO{ + 发件人信息:AddresserBO addresserBO + 收件人信息:RecipientBO recipientBO + 订单状态:Integer orderStatus + 订单创建时间:Date dateCreate + 发件人地址:AddressBO addressSendBO + 收件人地址:AddressBO addressReceiveBO + 订单金额:Long price + 快递单号:String orderCode + 订单来源:String orderSource + 订单业务类型:String expressOrderBusType + 物品信息:ExpressItemsBO expressItemsBO + +支付订单: void payOrder() + +关闭订单: void closeOrder() + +初始化订单对象:static ExpressOrderBO getInstance(String orderCode) + .. extend info .. + tableKey:String express_order + contextKey:String order + } +} + + + + + + + + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain.puml b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain.puml new file mode 100644 index 0000000..11dc9ad --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/ddd-plantuml/infosys-express/express-domain.puml @@ -0,0 +1,317 @@ +@startuml + +package domain.enum{ + enum "物品类型-ItemTypeEnum" as ExpressageTypeEnum{ + FOOD(1,"食品"), + CLOTHES(2,"衣服"), + ELECTRONICS(3,"电子产品"), + DRUG(4,"药品"), + OTHER(4,"其他"); + 快递类型:Integer code + 快递类型描述:String desc + static ItemTypeEnum getByCode(Integer code) + .. extend info .. + toRpcClient:String yes + } + + enum "快递业务类型-ExpressBusTypeEnum" as ExpressBusTypeEnum{ + BIG_EXPRESS(1,"大件"), + SAME_CITY(2,"同城送"), + BATCH_EXPRESS(3,"批量寄"), + COOL_EXPRESS(4,"冷链生鲜"); + 快递业务类型类型:Integer code + 快递业务类型描述:String desc + static ExpressBusTypeEnum getByCode(Integer code) + .. extend info .. + toRpcClient:String yes + } + + enum "付款方式-PayMethodEnum" as PayMethodEnum{ + ADDRESSER_PAY(1,"现寄现付") + RECIPIENT_PAY(2,"现寄到付") + MONTHLY_PAY(3,"月结支付") + + 付款方式类型:Integer code + 付款方式描述:String desc + static PayMethodEnum getByCode(Integer code) + .. extend info .. + toRpcClient:String yes + } + + enum "订单来源-OrderSourceEnum" as OrderSourceEnum{ + MICR_SITE(1,"小程序"), + APP_SITE(2,"APP"), + WEB_SITE(3,"web网站"), + 订单来源类型:Integer code + 订单来源描述:String desc + static OrderSourceEnum getByCode(Integer code) + .. extend info .. + toRpcClient:String yes + + } + + enum "快递站点合作方式-CooperationTypeEnum" as CooperationTypeEnum{ + JOIN(1,"加盟"), + SLEF_SUPPORT(2,"自营"), + 合作方式类型:Integer code + 合作方式描述:String desc + static CooperationTypeEnum getByCode(Integer code) + .. extend info .. + toRpcClient:String yes + } +} + + +package domain.bo { + class "发件人-AddresserBO" as AddresserBO{ + 电话号码:String telPhone + 发件人姓名:String chineseName + 用户ID:String userId + 地址列表:List addressBOList + .. extend info .. + + tableKey:String address_list + + facadeKey:String AddresserFacade + + dtoKeyList:String UpdateAddressRequestDTO,AddressDTO,CreateAddressRequestDTO + + contextKey:String user + + 获取用户常用发件地址: List getByUserId(String userId) + 增加发件地址: Boolean addAddress(CreateAddressRequestDTO createAddressRequestDTO).@I + } + + class "地址-AddressBO" as AddressBO{ + 省份ID:String provinceID + 省份名称:String proviceName + 城市ID:String cityID + 城市名称:String cityName + 区域ID:String areaID + 区域名称:String areaName + 街道ID:String streetID + 街道名称:String streetName + 地址描述:String detailAddress + } + + class "收件人-RecipientBO" as RecipientBO{ + 电话号码:String telPhone + 收件人姓名:String chineseName + 用户ID:String userId + } + + class "快件-ExpressItemsBO" as ExpressItemsBO{ + 物品类型名词:String itemTypeName + 预估重量/kg:String weight + 备注:String remark + 物品体积/立方米:Integer volume + .. extend info .. + tableKey:String express_items + contextKey:String express + + } + + class "快递员-CourierBO" as CourierBO{ + 电话号码:String telPhone + 快递员姓名:String chineseName + 快递员工号:String staffNum + + } + + class "快递订单-ExpressOrderBO" as ExpressOrderBO{ + 发件人信息:AddresserBO addresserBO + 收件人信息:RecipientBO recipientBO + 订单状态:Integer orderStatus + 订单创建时间:Date dateCreate + 发件人地址:AddressBO addressSendBO + 收件人地址:AddressBO addressReceiveBO + 订单金额:Long price + 快递单号:String orderCode + 订单来源:String orderSource + 订单业务类型:String expressOrderBusType + 物品信息:ExpressItemsBO expressItemsBO + +支付订单: void payOrder() + +关闭订单: void closeOrder() + + .. extend info .. + + tableKey:String express_order + facadeKey:String ExpressOrderFacade + + dtoKeyList:String CreateOrderRequestDTO,ExpressOrderDTO + + contextKey:String order + + 创建快递订单: String createOrder(CreateOrderRequestDTO createOrderRequestDTO) + } + + class "快递网点-ExpressSiteBO" as ExpressSiteBO{ + 网点地址:AddressBO addressFirstBO + 快递网点负责人姓名:String ownerName + 快递网点负责人电话:String telPhone + 合作方式:Integer cooperationType + .. extend info .. + + tableKey:String express_site + facadeKey:String ExpressSiteFacade + + dtoKeyList:String CreateSiteRequestDTO,ExpressSiteDTO + + contextKey:String express + + 创建快递网点: String ExpressSiteFacade.create(CreateSiteRequestDTO createSiteRequestDTO) + } + + class "快递物流轨迹-ExpressTraceBO" as ExpressTraceBO{ + 快递单号:String orderCode + 快递到达地点:String addressName + 物流轨迹描述:String desc + 物流轨迹上传来源:String sourceCode + 快递到达时间:Date arriveDate + 轨迹创建时间:Date dateCreate + .. extend info .. + + tableKey:String express_trace + facadeKey:String ExpressTraceFacade + + dtoKeyList:String ExpressTraceDTO + + contextKey:String express + + 创建快递网点: List selectTrace(String expressOrderCode) + } + + + class "快递价格计算slot-PriceSlotBO" as PriceSlotBO{ + 发件人地址:AddressBO addressFirstBO + 收件人地址:AddressBO addressSecondBO + 订单业务类型:String expressOrderBusType + 物品信息:ExpressItemsBO expressItemsBO + } + +} + + +package domain.msgbody { + class "OrderPayedMsgBody-接收订单支付消息" as OrderPayedMsgBody{ + + } + + class "ExpressTracePushMsgBody-接收物流轨迹上传消息" as ExpressTracePushMsgBody{ + + } +} + +package domain.event{ + class "OrderCreatedEvent-订单创建事件" as OrderCreatedEvent{ + 订单号:String orderCode + } + + class "OrderPayedEvent-订单支付事件" as OrderPayedEvent{ + 订单号:String orderCode + } + + class "OrderCompletedEvent-订单完成事件" as OrderCompletedEvent{ + 订单号:String orderCode + } +} + + + +package domain.service { + interface "用户服务网关-UserGataway" as UserGataway{ + 根据电话号码和姓名查询是否已注册用户:String getUserId(String telPhone,String chineseName) + } + + + interface "地址服务网关-AddressGataway" as AddressGataway{ + 根据条件查询地址列表:List searchAddress() + } + + + interface "快递订单服务-OrderService" as OrderService{ + 创建快递订单: String createOrder(ExpressOrderBO expressOrderBO) + 取消快递订单: boolean cancelOrder(String orderCode) + 根据订单号聚合查询订单信息: ExpressOrderBO queryOrderByCode(String orderCode) + } + + + + interface "物流轨迹服务-ExpressTraceService" as ExpressTraceService{ + 推送物流轨迹: String pushTrace(ExpressTraceBO expressTraceBO) + } + + interface "快递网点服务-ExpressSiteService" as ExpressSiteService{ + 创建快递网点信息: String createOrder(ExpressSiteBO expressSiteBO) + } + +} + + +package "领域工厂服务包-domain.factory" { + class "快递订单工厂-OrderFactory" as OrderFactory{ + 构建快递订单:ExpressOrderBO build(String orderCode) + } + +} + + + +package app.command { + + class "抽象命令类-AbstractCmd" as AbstractCmd{ + +操作时间: Date operateTime + +操作人ID: Long userId + +命令类: Class commandClass + +命令数据: String payLoad; + + } + + class "创建订单命令-CreateOrderCmd" as CreateOrderCmd{ + + } + + + CreateOrderCmd --|> AbstractCmd + +} + +package app.exe { + + interface "命令执行接口-CmdExeService" as CmdExeService{ + 命令执行入口:String exe(AbstractCmd abstractCmd) + } + + class "订单cmd处理类-OrderCmdExe" as OrderCmdExe{ + + } + + class "价格计算组件-CalculateCmp" as CalculateCmp{ + } + OrderCmdExe ..|> CmdExeService + +} + + + +package "应用层事件监听器包支持域内消息和域外消息,在应用层处理消息-app.listener" as app.listener{ + class "支付结果监听-PayOrderResultListener" as PayOrderResultListener{ + +事务提交后权限变更监听:void authorityCreate(String authCode) + } +} + + + +package "基础设施层消息生产者-mq.producer" as mq.producer { + class "权限上下文消息生产者-ExpressOrderMqProducer" as ExpressOrderMqProducer{ + +订单创建:void orderCreate(String orderCode) + } +} + +package "基础设施层消息消费者-mq.consumer" as mq.consumer { + class "支付服务消息消费者或者监听-PaymentMqConsumer" as PaymentMqConsumer{ + +监听支付单结果消息:void consumePayOrderChange(String mqBody) + } +} + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-auth/infosys_auth.puml b/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-auth/infosys_auth.puml new file mode 100644 index 0000000..41dc434 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-auth/infosys_auth.puml @@ -0,0 +1,164 @@ +@startuml +' hide the spot +hide circle + +' avoid problems with angled crows feet +skinparam linetype ortho + +entity " user_group 用户组" as user_group { + id: 主键/bigint(20) unsigned + group_name: 用户组名/varchar(50) + group_code: 用户组编码/varchar(50) + status: 用户组状态/bigint(20) + user_list: 用户组内用户列表/varchar(2000) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " data_column_config 数据字段管理表" as data_column_config { + id: 主键/bigint(20) unsigned + bus_database: 数据库业务系统名称/varchar(60) + table_name: 表名称/varchar(60) + table_desc: 表描述/varchar(60) + column_name: 字段名称/varchar(60) + column_desc: 字段描述/varchar(60) + bus_model: 业务模块/varchar(60) + field_name: 业务属性名称/varchar(60) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " role 角色表" as role { + id: 主键/bigint(20) unsigned + role_name: 角色名称/varchar(50) + role_code: 角色编码/varchar(50) + status: 角色组状态/bigint(20) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " role_group 角色组" as role_group { + id: 主键/bigint(20) unsigned + group_name: 角色组名/varchar(50) + group_code: 角色组编码/varchar(50) + role_code_list: 角色列表/varchar(2000) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " kv_instance " as kv_instance { + id: 主键/bigint(20) unsigned + k: key/varchar(64) + v: value值/tinytext + value_json: /json + group_key: 分组key/varchar(64) + parent_key: 父级key/varchar(64) + refer_key: 引用对象key/varchar(64) + refer_id: 引用对象实例ID/varchar(64) + value_type: value的Java数据类型/int(11) + key_type: key的Java数据类型/int(11) + status: 状态,跟着主对象走/int(11) +} + +entity " module 菜单模块表" as module { + id: 主键/bigint(20) unsigned + module_name: 菜单名称/varchar(50) + module_code: 菜单编码/varchar(50) + system_code: 系统编码/varchar(50) + module_url: 菜单链接/varchar(50) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " menu 按钮表" as menu { + id: 主键/bigint(20) unsigned + menu_name: 按钮名称/varchar(50) + menu_code: 按钮编码/varchar(50) + module_code: 所属菜单编码/varchar(50) + system_code: 所属系统编码/varchar(50) + menu_url: 菜单链接/varchar(50) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " data_authority 数据字段权限" as data_authority { + id: 主键/bigint(20) unsigned + auth_code: 权限标示/varchar(50) + data_column_id: 业务数据库标示/varchar(50) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " system 系统表" as system { + id: 主键/bigint(20) unsigned + system_name: 系统名称/varchar(50) + system_code: 系统编码/varchar(50) + system_url: 系统域名/varchar(50) + system_picurl: 系统图标/varchar(50) + tec_admin_user_id: 系统技术负责人/bigint(20) + bus_admin_user_id: 系统业务负责人/bigint(20) + department_id: 系统所属部门/bigint(20) + date_create: 创建时间/timestamp + create_user_id: 创建人/bigint(20) + status: /int(11) +} + +entity " system_authority 系统菜单权限表" as system_authority { + id: 主键/bigint(20) unsigned + auth_code: 权限标示/varchar(50) + system_code: 系统编码/varchar(50) + module_code: 菜单编码/varchar(50) + menu_code: 按钮编码/varchar(50) + date_create: 创建时间/timestamp + create_user_id: 创建人/bigint(20) +} + +entity " admin_authority 行政数据权限" as admin_authority { + id: 主键/bigint(20) unsigned + auth_code: 权限标示/varchar(50) + department_id: 组织部门ID/bigint(20) + city_id: 城市权限/bigint(20) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " authority 抽象权限表" as authority { + id: 主键/bigint(20) unsigned + auth_code: 权限编码/varchar(50) + authority_type: 权限类型/tinyint(4) + role_code: 关联角色编码/varchar(50) + role_group_code: 关联角色组/varchar(50) + status: 权限状态/tinyint(4) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity " role_user_relation 用户角色关联表" as role_user_relation { + id: 主键/bigint(20) unsigned + user_id: 用户ID/bigint(20) + role_code: 角色code/varchar(50) +} + + + + + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-express/infosys_express.puml b/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-express/infosys_express.puml new file mode 100644 index 0000000..634fcc0 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/infosys-express/infosys_express.puml @@ -0,0 +1,109 @@ +@startuml +' hide the spot +hide circle + +' avoid problems with angled crows feet +skinparam linetype ortho + +entity "address_list 发件人常用地址" as address_list { + id: 主键/bigint(20) unsigned + province_id: 所在省份ID/varchar(20) + city_id: 所在城市ID/varchar(20) + area_id: 所在区域ID/varchar(20) + street_id: 所在街道ID/varchar(20) + site_code: 快递站点编码/varchar(30) + address_detail: 具体地址/varchar(256) + user_id: 用户ID/varchar(20) + is_often: 是否是常用地址/int(11) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity "express_items 快递物品信息" as express_items { + id: 主键/bigint(20) unsigned + item_type: 物品类型/int(11) + forecast_weight: 预估重量/int(11) + remark: 备注/varchar(256) + volume: 物品体积/int(11) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity "express_order 快递订单信息" as express_order { + id: 主键/bigint(20) unsigned + addresser_user_id: 发件人id/varchar(20) + addresser_user_name: 发件人姓名/varchar(20) + addresser_telphone: 发件人电话/varchar(20) + send_address: 发件人地址/varchar(256) + recipient_user_id: 收件人id/varchar(20) + recipient_user_name: 收件人姓名/varchar(20) + recipient_telphone: 收件人电话/varchar(20) + order_status: 订单状态/int(11) + receive_address: 收件人地址/varchar(256) + price: 订单金额/bigint(20) + order_code: 订单编号/varchar(64) + order_source: 订单来源/varchar(64) + express_order_bus_type: 订单业务类型/int(11) + express_item_id: 物品ID/bigint(11) + date_create: 订单创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) + mark_content: 快递备注/varchar(256) +} + + +entity "express_order_trace 快递订单轨迹信息" as express_order_trace { + id: 主键/bigint(20) unsigned + + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + + +entity "express_site 快递站点信息" as express_site { + id: 主键/bigint(20) unsigned + province_id: 所在省份ID/varchar(20) + city_id: 所在城市ID/varchar(20) + area_id: 所在区域ID/varchar(20) + street_id: 所在街道ID/varchar(20) + site_code: 快递站点编码/varchar(30) + address_detail: 具体地址/varchar(256) + owner_name: 快递网点负责人姓名/varchar(20) + tel_phone: 快递网点负责人电话/varchar(20) + cooperation_type: 合作方式/int(11) +} + +entity "express_trace 快递物流轨迹信息" as express_trace { + id: 主键/bigint(20) unsigned + order_code: 快递订单号/varchar(64) + address_name: 快递到达地点/varchar(128) + desc: 物流轨迹描述/varchar(256) + source_code: 物流轨迹上传来源/varchar(64) + arrive_date: 快递到达时间/timestamp + date_create: 轨迹创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +entity "price_config 快递价格配置" as price_config { + id: 主键/bigint(20) unsigned + start_province: 发送省份/varchar(20) + end_province: 接收省份/varchar(20) + weight_basic: 基本重量/int(11) + price_basic: 基本价格/int(11) + over_weight_price: 超重价格/int(11) + date_create: 创建时间/timestamp + date_update: 修改时间/timestamp + update_user_id: 修改人/bigint(20) + create_user_id: 创建人/bigint(20) +} + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/api-json/readme b/codemaker-parent/codemaker-core/src/main/resources/er-plantuml/xxx similarity index 100% rename from codemaker-parent/codemaker-core/src/main/resources/api-json/readme rename to codemaker-parent/codemaker-core/src/main/resources/er-plantuml/xxx diff --git a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/AuthorityRepository.puml b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/AuthorityRepository.puml new file mode 100644 index 0000000..b3c2cfb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/AuthorityRepository.puml @@ -0,0 +1,24 @@ +@startuml + + +participant AuthorityRepository as c +participant infrast as s + +group 禁用权限资源:disableAuthority(code,) +a -> i: bo=authorityMapper.getByCode(code).convert() +a -> a: ifnull(bo).throw(E1000002) +a -> a: bo.disable() +a -> i: bo.convertdo().mapper.update() => ret(var==1) +end + +group 禁用权限资源:updateAuthToRole(bo) +a -> i: adminAuthorityMapper.deleteByAuthCode(bo.authCode) +a -> i: systemAuthorityMapper.deleteByAuthCode(bo.authCode) +a -> i: dataAuthorityMapper.deleteByAuthCode(bo.authCode) + +a -> a: ifnotempty(bo.dataAuthorityBOList) => fore(bo.dataAuthorityBOList) => dataAuthorityMapper.insert + +end + + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/SystemModuleRepository.puml b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/SystemModuleRepository.puml new file mode 100644 index 0000000..161d879 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/SystemModuleRepository.puml @@ -0,0 +1,22 @@ +@startuml + + +participant SystemModuleRepository as s +participant infrast as i + +group 禁用权限资源:registSystemMeta(systemBO) +s -> i: systemDO=varc(systemBO) +s -> a: ifnotempty(systemDO.systemCode) => systemMapper.insert(systemDO) +s -> i: ifnotemptys(systemBO.moduleBOList) => ret(systemDO.id) + +s -> i: moduleBOList = systemBO.moduleBOList.sfilter.isnotempty(moduleBO.moduleCode).cl +s -> i: ifnotemptys(moduleBOList) => ret(systemDO.id) +s -> i: moduleMapper.insertBatch(varc(moduleBOList)) + +s -> i: systemBO.moduleBOList.sfore(moduleBO) => ifnotemptys(moduleBO.menuBOList) => menuMapper.insertBatch(varc(moduleBO.menuBOList)) + +end + + + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-auth/datacolumncontextseq.puml b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-auth/datacolumncontextseq.puml index 22af333..ae03cd2 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-auth/datacolumncontextseq.puml +++ b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-auth/datacolumncontextseq.puml @@ -1,4 +1,4 @@ -@startuml +9@startuml participant 应用facade层 as facade participant 应用http层 as http diff --git a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-express/createorder.puml b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-express/createorder.puml new file mode 100644 index 0000000..aadafa6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/infosys-express/createorder.puml @@ -0,0 +1,14 @@ +@startuml +participant 各个端侧入口 as endpoint +participant 物流订单系统 as order +participant 支付系统 as payment +participant 快递终端服务 as endexpress +endpoint -> order : 创建订单 +order -> order : api层校验转换cmd +order -> order : 进入应用层cmdexecutor +order -> order : 进入应用层-价格计算组件计算订单金额 +order -> order : 进入应用层保存业务订单 +order -> payment : 创建支付单并支付 +payment --> order : 消息回调支付完成 +order --> endexpress : 订单发出支付完成消息,通知揽收 +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/role.puml b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/role.puml new file mode 100644 index 0000000..3237b50 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/invoke-plantuml/role.puml @@ -0,0 +1,21 @@ +@startuml + +participant 角色服务 as roleFacade +participant 角色服务 as roleFacade + +participant 领域层 as domain +participant 基础设施层 as infrast +participant 组织服务 as infosysuser + +group 创建角色:createRole +roleFacade -> domain:userRoleRepository.saveRole.rets +end + +group 修改角色:updateRole +roleFacade -> domain:var=userRoleRepository.updateRole +note left: 我借钱肯定会还你的! +alt ifrets(var>0) +else retf +end + +@enduml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/mapper/sqlMapper.xml b/codemaker-parent/codemaker-core/src/main/resources/mapper/sqlMapper.xml index 9dfd0f5..294da02 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/mapper/sqlMapper.xml +++ b/codemaker-parent/codemaker-core/src/main/resources/mapper/sqlMapper.xml @@ -1,9 +1,9 @@ - + - SELECT TABLE_NAME AS tableName ,COLUMN_NAME columnName, COLUMN_DEFAULT AS columnDefaultValue,DATA_TYPE AS dataType, EXTRA AS extraInfo ,COLUMN_KEY AS columnKey,IS_NULLABLE AS isNullable, @@ -11,7 +11,7 @@ WHERE TABLE_SCHEMA = #{dbName} - SELECT TABLE_NAME AS tableName,TABLE_COMMENT AS tableComment FROM information_schema.TABLES WHERE TABLE_SCHEMA = #{dbName} diff --git a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-cola.properties b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-cola.properties index 9ee5b30..a2074a1 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-cola.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-cola.properties @@ -1,29 +1,46 @@ #数据库名称 cola.global.dbName=infosys_auth +#cola.global.dbName=infosys_express -#应用名称 +#应用名称,作为工程名称 cola.global.applicationName=infosys-auth +#cola.global.applicationName=infosys-express + +#应用别名与目标工程输出目录一致 +cola.global.applicationNameAlias=auth +#cola.global.applicationNameAlias=express + + +#maven坐标-GAV---父级模块的GAV信息 +cola.pom.parent.groupId=com.coderman.infosys.express +cola.pom.parent.artifactId=infosys-express +cola.pom.parent.version=1.0.0.SNAPSHOT + +cola.code.app.project.path=/Users/shenshuai/scworkspace/myspace/code-maker #目标工程输出目录,这里填写对应的工程的绝对路径 -cola.code.outpath.cola-adapter=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-adapter -cola.code.outpath.cola-infrast=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-infrast -cola.code.outpath.cola-app=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-app -cola.code.outpath.cola-domain=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-domain -cola.code.outpath.cola-client=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-client -cola.code.outpath.cola-start=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-start -cola.code.outpath.cola-feign-api=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-feign-api +#cola.code.outpath.cola-adapter=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-adapter +#cola.code.outpath.cola-infrast=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-infrast +#cola.code.outpath.cola-app=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-app +#cola.code.outpath.cola-domain=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-domain +#cola.code.outpath.cola-client=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-client +#cola.code.outpath.cola-start=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-start +#cola.code.outpath.cola-feign-api=/Users/shenshuai/myspace/code-maker/codemaker-cola/cola-feign-api #应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 +#cola.domain.plantuml=express-domain.puml cola.domain.plantuml=auth-domainV5.puml -#cola.domain.plantuml= #是否构建api 文档,否则进行构建,默认构建 cola.api.generator=true +#是否将调用时序文档同步到项目工程里,默认同步 +cola.plantumldoc.sync=true #需要导入的组件列表,多个逗号分割,适用于cola模块下依赖的业务组件包或者对外api接口包,或者cola项目本身已有的代码类,或者其他偏业务的工具类组件等等。 #如要生成的项目会依赖 infosys-user 服务的api则在这里定义即可。 -cola.component.scan.config=apiresult,infosysuser,hutool-core +cola.component.scan.config=apiresult,infosysuser,hutool-core,mybatis-plus,springcloudalibaba-rocketmq +#cola.component.scan.config=apiresult,infosysuser,hutool-core,mybatis-plus,liteflow,rocketmq,springboot-redis #需要在领域文档和调用时序文档中识别的读操作统一语言 cola.component.dsl.read=check @@ -43,9 +60,26 @@ cola.subpackage.response=true cola.component.scan.beans=appCompScanService #应用级组件中间件工具包的组件装饰bean配置 -cola.component.decorate.beans=appCompDecorateService +cola.component.decorate.beans=appCompDecorateService,mybatisPlusDecorateService +#cola.component.decorate.beans=appCompDecorateService,mybatisPlusDecorateService,liteFlowDecorateService + +#应用级代码参数dto,vo所需要的参数验证逻辑构建bean,内置五种实现 +#支持validateAopService,validateJSRHibernateService,validateParamService,validateUtilService,validateServiceValidator +cola.component.validate.beans=validateParamService,validateServiceValidator + #代码工具类注册,项目初始化时可以帮助初始化对应的工具类 #后面生成代码的时候可以删掉工具类,只专注于生成业务代码 #格式说明 eg:BaseEvent:core 前面是需要初始化的类,后面是这个类放到哪个模块下 -cola.component.init.clazz=BaseEvent:domain,Application:start,BaseController:adapter,PageBO:domain,SpringApplicationContext:domain,AppEventPublisher:domain +cola.component.init.clazz=BaseEvent:domain,Application:start,BaseController:adapter,PageBO:domain,SpringApplicationContext:domain,AppEventPublisher:domain,LockA:domain,MqHandler:domain,IdemPotent:domain + +#项目各个模块需要依赖的pom gav配置 +#cola.component.init.pom=apiresult:adapter,apiresult:client,hutool-core:app,hutool-core:adapter,apiresult:feignapi,mybatis-plus:infrast,liteflow:domain,rocketmq:infrast,springboot-redis:infrast +cola.component.init.pom=apiresult:adapter,apiresult:client,hutool-core:app,hutool-core:adapter,apiresult:feignapi,mybatis-plus:infrast,springcloudalibaba-rocketmq:infrast + +#自定义ftl代码元素,eg ftlFileName:classType:moduleName +cola.code.template.custom.ftl=validator:class:app,cmp:class:app + +#项目各个模块需要导入的配置文件 +#cola.component.init.config=application_properties:start,log4j_properties:start,mybatis-config_xml:infrast,liteflow_properties:start +cola.component.init.config=application_properties:start,log4j_properties:start,mybatis-config_xml:infrast diff --git a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dubbo.properties b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dubbo.properties index fb6c548..4398895 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dubbo.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dubbo.properties @@ -1,21 +1,38 @@ #数据库名称 -dubbo.global.dbName=infosys_auth +dubbo.global.dbName=infosys_express #dubbo应用名 -dubbo.global.applicationName=infosys-auth +dubbo.global.applicationName=infosys-express + + +#应用别名与目标工程输出目录一致 +dubbo.global.applicationNameAlias=express + +#下面的绝对目录由project.path替代,简化配置 +dubbo.code.app.project.path=/Users/shenshuai/scworkspace/myspace/code-maker + +#maven坐标-GAV---父级模块的GAV信息 +dubbo.pom.parent.groupId=com.coderman.infosys.express +dubbo.pom.parent.artifactId=infosys-express +dubbo.pom.parent.version=1.0.0.SNAPSHOT + + + #目标工程输出目录,这里填写对应的工程的绝对路径 -dubbo.code.outpath.dubbo-common=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-common -dubbo.code.outpath.dubbo-api=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-api -dubbo.code.outpath.dubbo-core=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-core +#dubbo.code.outpath.dubbo-common=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-common +#dubbo.code.outpath.dubbo-api=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-api +#dubbo.code.outpath.dubbo-core=/Users/shenshuai/myspace/code-maker/codemaker-dubbo/dubbo-core #应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 -dubbo.domain.plantuml=auth-domainV5.puml +dubbo.domain.plantuml=express-domain.puml -#dubbo.domain.plantuml=SchoolManager.puml +#dubbo.domain.plantuml= #是否构建api 文档,否则进行构建,默认构建 dubbo.api.generator=true +#是否将调用时序文档同步到项目工程里,默认同步 +dubbo.plantumldoc.sync=true #是否需要根据该参数设置请求参数的最后一级包名为request,默认false dubbo.subpackage.request=false @@ -25,7 +42,8 @@ dubbo.subpackage.response=false #需要导入的组件列表,多个逗号分割 -dubbo.component.scan.config=apiresult,infosysuser,hutool-core +dubbo.component.scan.config=apiresult,infosysuser +#dubbo.component.scan.config=apiresult,infosysuser,hutool-core,rocketmq #需要在领域文档和调用时序文档中识别的读操作统一语言 dubbo.component.dsl.read=check @@ -43,5 +61,19 @@ dubbo.component.decorate.beans=appCompDecorateService #应用级代码工具类注册,项目初始化时可以帮助初始化对应的工具类 #后面生成代码的时候可以删掉工具类,只专注于生成业务代码 #格式说明 eg:BaseEvent:core 前面是需要初始化的类,后面是这个类放到哪个模块下 -dubbo.component.init.clazz=BaseEvent:core,Application:core,SpringApplicationContext:core,AppEventPublisher:core +dubbo.component.init.clazz=BaseEvent:core,Application:core,SpringApplicationContext:core,AppEventPublisher:core,PageBO:core,SpringApplicationContext:core,AppEventPublisher:core,LockA:core,MqHandler:core,IdemPotent:core + +#应用级代码参数dto,vo所需要的参数验证逻辑构建bean,内置五种实现 +#支持validateAopService,validateJSRHibernateService,validateParamService,validateUtilService,validateServiceValidator +dubbo.component.validate.beans=validateParamService,validateServiceValidator + + +#项目各个模块需要依赖的pom gav配置 +dubbo.component.init.pom=apiresult:api +#dubbo.component.init.pom=apiresult:api,hutool-core:core,hutool-core:common,rocketmq:core,springboot-redis:core + +#自定义ftl代码元素,eg ftlFileName:classType:moduleName +dubbo.code.template.custom.ftl=validator:class:core,cmp:class:core +#项目各个模块需要导入的配置文件 +dubbo.component.init.config=application_properties:core,log4j_properties:core,mybatis-config_xml:common diff --git a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dynamicddd.properties b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dynamicddd.properties index 155816f..7a448aa 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dynamicddd.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-dynamicddd.properties @@ -1,4 +1,4 @@ #目标工程输出目录,这里填写对应的codemaker-dynamicddd工程的绝对路径 -dynamicddd.code.outpath=/Users/shenshuai/myspace/code-maker/codemaker-dynamicddd +dynamicddd.code.outpath=/Users/shenshuai/scworkspace/myspace/code-maker/codemaker-dynamicddd #领域plantUML 类图 -dynamicddd.domain.plantuml=SchoolManager.puml \ No newline at end of file +dynamicddd.domain.plantuml=express-domain.puml \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springboot.properties b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springboot.properties index bbf061e..99d8026 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springboot.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springboot.properties @@ -1,26 +1,33 @@ #数据库名称 -springboot.global.dbName=infosys_auth +springboot.global.dbName=infosys_express #项目名称 -springboot.global.applicationName=infosys-auth +springboot.global.applicationName=infosys-express + +#应用别名与目标工程输出目录一致 +springboot.global.applicationNameAlias=express + +#下面的绝对目录由project.path替代,简化配置 +springboot.code.app.project.path=/Users/shenshuai/scworkspace/myspace/code-maker #maven坐标-GAV -codemaker.pom.groupId=com.snail.school.manager -codemaker.pom.artifactId=schoolmanager-web -codemaker.pom.version=1.0.0.SNAPSHOT +springboot.pom.groupId=com.coderman.infosys.express +springboot.pom.artifactId=infosys-express +springboot.pom.version=1.0.0.SNAPSHOT #目标工程输出目录,这里填写对应的codemaker-web工程的绝对路径 -codemaker.code.outpath=/Users/shenshuai/myspace/code-maker/codemaker-springboot +#codemaker.code.outpath=/Users/shenshuai/myspace/code-maker/codemaker-springboot #应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 -codemaker.domain.plantuml=auth-domainV5.puml -#codemaker.domain.plantuml=SchoolManager.puml +springboot.domain.plantuml= +#springboot.domain.plantuml=SchoolManager.puml #是否构建api 文档,否则进行构建,默认构建 springboot.api.generator=true +#是否将调用时序文档同步到项目工程里,默认同步 +springboot.plantumldoc.sync=true - -springboot.component.scan.config=apiresult,infosys-user +springboot.component.scan.config=apiresult,infosys-user,springcloudalibaba-rocketmq #需要在领域文档和调用时序文档中识别的读操作统一语言 @@ -45,7 +52,23 @@ springboot.component.scan.beans=appCompScanService springboot.component.decorate.beans=appCompDecorateService + +#应用级代码参数dto,vo所需要的参数验证逻辑构建bean,内置五种实现 +#支持validateAopService,validateJSRHibernateService,validateParamService,validateUtilService,validateServiceValidator +springboot.component.validate.beans=validateParamService,validateServiceValidator + + #应用级代码工具类注册,项目初始化时可以帮助初始化对应的工具类 #后面生成代码的时候可以删掉工具类,只专注于生成业务代码 #格式说明 eg:BaseEvent:core 前面是需要初始化的类,后面是这个类放到哪个模块下 -springboot.component.init.clazz=BaseEvent:springboot,Application:springboot,SpringApplicationContext:springboot,AppEventPublisher:springboot \ No newline at end of file +springboot.component.init.clazz=BaseController:springboot,BaseEvent:springboot,Application:springboot,SpringApplicationContext:springboot,AppEventPublisher:springboot + + +#项目各个模块需要依赖的pom gav配置 +springboot.component.init.pom=apiresult:springboot,springcloudalibaba-rocketmq:springboot + +#自定义ftl代码元素,eg ftlFileName:classType:moduleName +springboot.code.template.custom.ftl=validator:class:springboot + +#项目各个模块需要导入的配置文件 +springboot.component.init.config=application_yml:springboot,log4j_properties:springboot,mybatis-config_xml:springboot,rocketmq_yml:springboot diff --git a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springcloud.properties b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springcloud.properties index 0383715..dd0b864 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springcloud.properties +++ b/codemaker-parent/codemaker-core/src/main/resources/projecttemplate-springcloud.properties @@ -4,13 +4,20 @@ springcloud.global.dbName=infosys_auth #项目名称 springcloud.global.applicationName=infosys-auth +#应用别名与目标工程输出目录一致 +springcloud.global.applicationNameAlias=auth + +#下面的绝对目录由project.path替代,简化配置 +springcloud.code.app.project.path=/Users/shenshuai/scworkspace/myspace/code-maker + + #maven坐标-GAV -springcloud.pom.groupId=com.snail.school.manager -springcloud.pom.artifactId=schoolmanager-web +springcloud.pom.groupId=com.coderman.infosys.auth +springcloud.pom.artifactId=infosys-auth springcloud.pom.version=1.0.0.SNAPSHOT #目标工程输出目录,这里填写对应的codemaker-web工程的绝对路径 -springcloud.code.feign-api=/Users/shenshuai/myspace/code-maker/codemaker-springcloud/springcloud-api -springcloud.code.feign-provider=/Users/shenshuai/myspace/code-maker/codemaker-springcloud/springcloud-provider +#springcloud.code.feign-api=/Users/shenshuai/myspace/code-maker/codemaker-springcloud/springcloud-api +#springcloud.code.feign-provider=/Users/shenshuai/myspace/code-maker/codemaker-springcloud/springcloud-provider #应用服务的plantUML类图文件,不配置则走基于数据表的方式生成代码 springcloud.domain.plantuml=auth-domainV5.puml @@ -19,6 +26,8 @@ springcloud.domain.plantuml=auth-domainV5.puml #是否构建api 文档,否则进行构建,默认构建 springcloud.api.generator=true +#是否将调用时序文档同步到项目工程里,默认同步 +springcloud.plantumldoc.sync=true #需要导入的组件列表,多个逗号分割,适用于cola模块下依赖的业务组件包或者对外api接口包,或者cola项目本身已有的代码类,或者其他偏业务的工具类组件等等。 #如要生成的项目会依赖 infosys-user 服务的api则在这里定义即可 @@ -50,4 +59,21 @@ springcloud.component.decorate.beans=appCompDecorateService #应用级代码工具类注册,项目初始化时可以帮助初始化对应的工具类 #后面生成代码的时候可以删掉工具类,只专注于生成业务代码 #格式说明 eg:BaseEvent:core 前面是需要初始化的类,后面是这个类放到哪个模块下 -springcloud.component.init.clazz=BaseEvent:provider,Application:provider,SpringApplicationContext:provider,AppEventPublisher:provider \ No newline at end of file +springcloud.component.init.clazz=BaseEvent:provider,Application:provider,SpringApplicationContext:provider,AppEventPublisher:provider + + + + +#应用级代码参数dto,vo所需要的参数验证逻辑构建bean,内置五种实现 +#支持validateAopService,validateJSRHibernateService,validateParamService,validateUtilService,validateServiceValidator +springcloud.component.validate.beans=validateParamService,validateServiceValidator + + +#项目各个模块需要依赖的pom gav配置 +springcloud.component.init.pom=apiresult:api,hutool-core:provider + +#自定义ftl代码元素,eg ftlFileName:classType:moduleName +springcloud.code.template.custom.ftl=validator:class:provider + +#项目各个模块需要导入的配置文件 +springcloud.component.init.config=application_properties:provider,log4j_properties:provider,mybatis-config_xml:provider diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/applicationproperties.ftl index 5e846f6..e0b6eff 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/applicationproperties.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/applicationproperties.ftl @@ -16,6 +16,6 @@ spring.datasource.password=root mybatis.config-locations=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #配置模型路径 -mybatis.type-aliases-package=com.coderman.codemaker.bean +mybatis.type-aliases-package=com.tianhua.codemaker.bean diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/adapterpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/adapterpom.ftl new file mode 100644 index 0000000..b31ae48 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/adapterpom.ftl @@ -0,0 +1,117 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-adapter + 1.0-SNAPSHOT + + ${modulePrefix}-adapter + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + ${groupId} + ${modulePrefix}-app + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/apppom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/apppom.ftl new file mode 100644 index 0000000..468f42c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/apppom.ftl @@ -0,0 +1,135 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-app + 1.0-SNAPSHOT + + ${modulePrefix}-app + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + + org.springframework.boot + spring-boot-test + + + org.springframework + spring-test + + + + + org.projectlombok + lombok + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + org.mapstruct + mapstruct-jdk8 + + + org.aspectj + aspectjweaver + + + + org.assertj + assertj-core + + + + ${groupId} + ${modulePrefix}-client + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + + + ${groupId} + ${modulePrefix}-infrast + 1.0-SNAPSHOT + + + + org.apache.dubbo + dubbo + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/bo.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/bo.ftl index 79fea9d..c238015 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/bo.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/bo.ftl @@ -1,4 +1,4 @@ -package ${package}.model.bo; +package ${package}.domain.bo; import java.util.Date; import java.math.BigDecimal; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/boddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/boddd.ftl index 6107567..fc44ebc 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/boddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/boddd.ftl @@ -30,6 +30,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/clientpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/clientpom.ftl new file mode 100644 index 0000000..9839473 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/clientpom.ftl @@ -0,0 +1,60 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-client + 1.0-SNAPSHOT + + ${modulePrefix}-client + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/cmp.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/cmp.ftl new file mode 100644 index 0000000..6a43f0a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/cmp.ftl @@ -0,0 +1,32 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.stereotype.Component; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Component("${class.className}") +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/controller.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/controller.ftl index 3c88f6d..04e491d 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/controller.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/controller.ftl @@ -1,10 +1,12 @@ -package ${package}.controller; +package ${package}.adapter.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ${package}.service.${table.humpClassName}Service; -import ${package}.vo.${table.humpClassName}VO; +import ${package}.controller.BaseController; + +import ${package}.domain.service.${table.humpClassName}Service; +import ${package}.adapter.vo.${table.humpClassName}VO; import com.coderman.utils.response.ResultDataDto; import com.coderman.utils.response.ResultDto; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/controllerddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/controllerddd.ftl index 570a4e9..a334ab6 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/controllerddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/controllerddd.ftl @@ -17,7 +17,10 @@ import org.springframework.web.bind.annotation.*; * @version v1.0 */ @RestController -public class ${class.className} { +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ protected Logger logger = LoggerFactory.getLogger(${class.className}.class); @@ -29,6 +32,9 @@ public class ${class.className} { <#list methods as method> ${method.doc} + <#list method.annotationTagList as annotation> + ${annotation} + @RequestMapping(value = "${method.pathValue}") public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/doboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/doboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/doboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/domainpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/domainpom.ftl new file mode 100644 index 0000000..9efc00a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/domainpom.ftl @@ -0,0 +1,57 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + ${modulePrefix}-domain + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + org.projectlombok + lombok + + + + org.springframework + spring-context + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/dto.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dto.ftl index 12465ba..87e531d 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/dto.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dto.ftl @@ -1,4 +1,4 @@ -package ${package}.api.dto; +package ${package}.client.api.dto; import java.util.Date; import java.math.BigDecimal; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoddd.ftl index 9d21fd6..5c183a2 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/dtoddd.ftl @@ -18,8 +18,11 @@ import lombok.ToString; public class ${class.className} ${class.relationClassStr}{ <#list fields as field> - /** ${field.desc} **/ + /** ${field.desc} **/ + <#list field.annotationTagList as annotation> + ${annotation} + ${field.visibility} ${field.fieldName}; @@ -30,7 +33,8 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ - ${method.returnBody} + ${method.methodContent} + ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/event.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/event.ftl index 9f15e12..8da69e9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/event.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/event.ftl @@ -28,6 +28,7 @@ public class ${class.className}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/exeimpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/exeimpl.ftl index e6a8d75..dd3f647 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/exeimpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/exeimpl.ftl @@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -28,6 +31,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facade.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facade.ftl index 25af93e..71cee36 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facade.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facade.ftl @@ -1,11 +1,11 @@ -package ${package}.api.facade; +package ${package}.client.api.facade; import java.util.List; import com.coderman.utils.response.ResultDataDto; import com.coderman.utils.response.ResultDto; import com.coderman.utils.response.PageDTO; -import ${package}.api.dto.${table.humpClassName}DTO; +import ${package}.client.api.dto.${table.humpClassName}DTO; /** * @Description:${table.tableComment}Facade接口 diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimpl.ftl index bc8bcef..52ac99b 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimpl.ftl @@ -8,8 +8,8 @@ import com.coderman.utils.response.ResultDataDto; import com.coderman.utils.response.ResultDto; import com.coderman.utils.response.PageDTO; -import ${package}.api.facade.${table.humpClassName}Facade; -import ${package}.api.dto.${table.humpClassName}DTO; +import ${package}.client.api.facade.${table.humpClassName}Facade; +import ${package}.client.api.dto.${table.humpClassName}DTO; import java.util.List; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimplddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimplddd.ftl index ea57774..d96c04f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimplddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/facadeimplddd.ftl @@ -15,6 +15,9 @@ import ${importClass}; * @version v1.0 */ ${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -27,6 +30,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignapipom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignapipom.ftl new file mode 100644 index 0000000..b341932 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignapipom.ftl @@ -0,0 +1,90 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-feignapi + 1.0-SNAPSHOT + + ${modulePrefix}-feign-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignproviderpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignproviderpom.ftl new file mode 100644 index 0000000..7f017e1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/feignproviderpom.ftl @@ -0,0 +1,99 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + com.codemaker.cola + ${modulePrefix}-feign-api + 1.0-SNAPSHOT + + ${modulePrefix}-feign-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.11 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + com.codemaker.cola + cola-app + 1.0-SNAPSHOT + + + + com.codemaker.cola + cola-domain + 1.0-SNAPSHOT + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/infrastpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/infrastpom.ftl new file mode 100644 index 0000000..94ebca1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/infrastpom.ftl @@ -0,0 +1,130 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-infrast + 1.0-SNAPSHOT + + ${modulePrefix}-infrast + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + org.springframework + spring-tx + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.0.1 + + + org.springframework.boot + spring-boot-starter + + + + + + + + + mysql + mysql-connector-java + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperddd.ftl index 786135a..abbbb63 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperddd.ftl @@ -15,7 +15,7 @@ import ${importClass}; * @version v1.0 */ @Mapper -public interface ${class.className}{ +public interface ${class.className} ${class.relationClassStr}{ <#list methods as method> ${method.doc} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxml.ftl index 0938495..c5a2e7f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxml.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxml.ftl @@ -1,11 +1,11 @@ - + - + <#list columns as column> @@ -22,7 +22,7 @@ ${table.columnNameList} - + insert into ${table.tableName}( ${table.insertColumnNames} ) @@ -31,7 +31,7 @@ ) - + update ${table.tableName} set ${table.updateColumnNameList} @@ -42,7 +42,7 @@ select from ${table.tableName} - diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxmlddd.ftl index 7d50a9a..a51999f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxmlddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mapperxmlddd.ftl @@ -22,34 +22,6 @@ ${table.columnNameList} - - insert into ${table.tableName}( - ${table.insertColumnNames} - ) - values( - ${table.insertColumnNameList} - ) - - - - update ${table.tableName} - set - ${table.updateColumnNameList} - where id = <#noparse>#{id<#noparse>} - - - - - - - - delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} - - <#list fields as field> ${field.fieldName} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqconsumer.ftl index 758b640..e40bf30 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqconsumer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqconsumer.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,6 +29,9 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqhandler.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqhandler.ftl index 758b640..4010cab 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqhandler.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqhandler.ftl @@ -27,6 +27,7 @@ public class ${class.className}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqlistener.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqlistener.ftl index 758b640..d702d67 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqlistener.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqlistener.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,7 +29,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqproducer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqproducer.ftl index 758b640..ae624a9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqproducer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/mqproducer.ftl @@ -13,7 +13,11 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service -public class ${class.className}{ +${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ <#list fields as field> /** ${field.desc} **/ @@ -26,7 +30,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/parentpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/parentpom.ftl new file mode 100644 index 0000000..98b738e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/parentpom.ftl @@ -0,0 +1,255 @@ + + + + 4.0.0 + + ${groupId} + ${artifactId} + pom + ${version} + + ${modulePrefix}-adapter + ${modulePrefix}-domain + ${modulePrefix}-infrast + ${modulePrefix}-app + ${modulePrefix}-client + ${modulePrefix}-start + ${modulePrefix}-feignapi + + + ${artifactId} + + ${url} + + + UTF-8 + 1.8 + 1.8 + 1.8 + 2.1.9.RELEASE + 2.7.3 + 1.2.0.Final + 4.8.0 + Hoxton.SR3 + 2.2.0.RELEASE + + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${r'${spring-alibaba-cloud.version}'} + pom + import + + + + org.springframework.cloud + spring-cloud-dependencies + ${r'${spring-cloud.version}'} + pom + import + + + + + + org.springframework.boot + spring-boot-dependencies + ${r'${spring-boot.version}'} + pom + import + + + + + org.apache.dubbo + dubbo-dependencies-bom + ${r'${dubbo.version}'} + pom + import + + + + org.apache.dubbo + dubbo-spring-boot-starter + ${r'${dubbo.version}'} + + + org.apache.dubbo + dubbo + ${r'${dubbo.version}'} + + + org.springframework + spring + + + javax.servlet + servlet-api + + + log4j + log4j + + + + + + com.alibaba.spring + spring-context-support + 1.0.5 + + + + org.mapstruct + mapstruct + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-processor + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-jdk8 + ${r'${mapstruct.version}'} + + + + + commons-collections + commons-collections + 3.2.1 + + + + com.alibaba + fastjson + 1.2.72 + + + + + commons-lang + commons-lang + 2.4 + + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.3 + + + + + org.slf4j + slf4j-api + 1.7.28 + + + org.slf4j + slf4j-ext + 1.7.28 + + + + org.slf4j + slf4j-log4j12 + 1.7.28 + + + + org.springframework.boot + spring-boot-starter-log4j2 + ${r'${spring-boot.version}'} + + + + org.aspectj + aspectjweaver + 1.9.4 + + + + org.aspectj + aspectjrt + 1.8.13 + + + + org.assertj + assertj-core + 3.9.1 + + + + + org.apache.rocketmq + rocketmq-client + ${r'${rocketmq.version}'} + + + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + + + + aliyun-releases + 阿里云仓库 + https://maven.aliyun.com/repository/public + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + false + + + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/service.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/service.ftl index 83cea8c..d41d0ce 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/service.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/service.ftl @@ -1,8 +1,8 @@ -package ${package}.service; +package ${package}.domain.service; import java.util.List; -import ${package}.model.bo.${table.humpClassName}BO; +import ${package}.domain.bo.${table.humpClassName}BO; /** * @Description:${table.tableComment}Service接口 diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceImpl.ftl index 03c66a6..7a58e32 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceImpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceImpl.ftl @@ -1,4 +1,4 @@ -package ${packageInfrast}.service.impl; +package ${packageInfrast}.serviceimpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,8 +6,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import ${packageInfrast}.dao.mapper.${table.humpClassName}Mapper; -import ${package}.service.${table.humpClassName}Service; -import ${package}.model.bo.${table.humpClassName}BO; +import ${package}.domain.service.${table.humpClassName}Service; +import ${package}.domain.bo.${table.humpClassName}BO; import java.util.List; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceddd.ftl new file mode 100644 index 0000000..c22e22b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/serviceddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/startpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/startpom.ftl new file mode 100644 index 0000000..7132f2d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/startpom.ftl @@ -0,0 +1,83 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-start + 1.0-SNAPSHOT + + ${modulePrefix}-start + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + ${groupId} + ${modulePrefix}-app + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-infrast + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-adapter + 1.0-SNAPSHOT + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/testddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/testddd.ftl new file mode 100644 index 0000000..3266f5d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/testddd.ftl @@ -0,0 +1,110 @@ +package ${class.packageName}.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +<#list imports as importClass> +import ${importClass}; + + + +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${class.classDesc}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${class.className}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/validator.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/validator.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/validator.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/vo.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/vo.ftl index 8113fd2..c6d10ea 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/vo.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/vo.ftl @@ -1,4 +1,4 @@ -package ${package}.vo; +package ${package}.adapter.vo; import java.util.Date; import java.math.BigDecimal; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/voboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/voboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/voboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/cola/voddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/cola/voddd.ftl index 5c2f634..eb41c71 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/cola/voddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/cola/voddd.ftl @@ -18,7 +18,11 @@ import lombok.ToString; public class ${class.className} ${class.relationClassStr}{ <#list fields as field> - /** ${field.desc} **/ + + /** ${field.desc} **/ + <#list field.annotationTagList as annotation> + ${annotation} + ${field.visibility} ${field.fieldName}; @@ -29,6 +33,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/application_properties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/application_properties.ftl new file mode 100644 index 0000000..7272546 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/application_properties.ftl @@ -0,0 +1,19 @@ +server.port=8080 + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/${projectBean.dataBaseName}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username= +spring.datasource.password= + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=${packageInfrast}.dao.dataobject +spring.application.name=${projectBean.applicationName} +<#list configFileList as config> +${config} + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/application_yml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/application_yml.ftl new file mode 100644 index 0000000..1b535ad --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/application_yml.ftl @@ -0,0 +1,23 @@ +server: + port: 8080 + +spring: + application: + name: ${projectBean.applicationName} + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/${projectBean.dataBaseName}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC + username: + password: + +#mybatis +mybatis: + config-locations: classpath:mybatis-config.xml + mapper-locations: classpath:mapper/*.xml + type-aliases-package: ${packageInfrast}.dao.dataobject + +<#list configFileList as config> +${config} + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/liteflow_properties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/liteflow_properties.ftl new file mode 100644 index 0000000..ba6bbe6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/liteflow_properties.ftl @@ -0,0 +1 @@ +liteflow.ruleSource=liteflow/flow.xml diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_properties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_properties.ftl new file mode 100644 index 0000000..9602da6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_properties.ftl @@ -0,0 +1,10 @@ +log4j.rootLogger=info, ServerDailyRollingFile, stdout +log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender +log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd +log4j.appender.ServerDailyRollingFile.File=logs/notify-subscription.log +log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout +log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n +log4j.appender.ServerDailyRollingFile.Append=true +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_xml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_xml.ftl new file mode 100644 index 0000000..f2cefab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/log4j_xml.ftl @@ -0,0 +1,117 @@ + + + + + + + + + + + + ${LOG_FILE}/toms-root.log + + + UTF-8 + + + ${LOG_PATH}/logs_saved/toms-root.%d{yyyy-MM-dd}.%i.log + 5 + 1GB + 20GB + + + + + + ${CONSOLE_LOG_PATTERN} + utf8 + + + + + + ${LOG_PATH}/toms-biz.log + + ${LOG_PATH}/logs_saved/toms-biz.%d{yyyy-MM-dd}.%i.log + 5 + 2GB + 20GB + + + + UTF-8 + + + + + + ${LOG_PATH}/toms-hsf.log + + ${LOG_PATH}/logs_saved/toms-hsf.%d{yyyy-MM-dd}.%i.log + 5 + 2GB + 20GB + + + + UTF-8 + + + + + + ${LOG_PATH}/toms-error.log + + ERROR + ACCEPT + DENY + + + ${LOG_PATH}/logs_saved/toms-error.%d{yyyy-MM-dd}.%i.log + 5 + 2GB + 10GB + + + + UTF-8 + + + + + + ${LOG_PATH}/toms-exception.log + + ${LOG_PATH}/logs_saved/toms-exception.%d{yyyy-MM-dd}.log + 5 + + + + UTF-8 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/config/mybatis-config_xml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/config/mybatis-config_xml.ftl new file mode 100644 index 0000000..51d0a7a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/config/mybatis-config_xml.ftl @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/apipom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/apipom.ftl new file mode 100644 index 0000000..36c0261 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/apipom.ftl @@ -0,0 +1,60 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-api + 1.0-SNAPSHOT + + ${modulePrefix}-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/applicationproperties.ftl index 5e846f6..e0b6eff 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/applicationproperties.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/applicationproperties.ftl @@ -16,6 +16,6 @@ spring.datasource.password=root mybatis.config-locations=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #配置模型路径 -mybatis.type-aliases-package=com.coderman.codemaker.bean +mybatis.type-aliases-package=com.tianhua.codemaker.bean diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/bo.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/bo.ftl index 79fea9d..16daa62 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/bo.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/bo.ftl @@ -1,4 +1,4 @@ -package ${package}.model.bo; +package ${package}.core.bo; import java.util.Date; import java.math.BigDecimal; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/boddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/boddd.ftl index 1a43aca..8f2abdc 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/boddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/boddd.ftl @@ -32,6 +32,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/cmp.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/cmp.ftl new file mode 100644 index 0000000..6a43f0a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/cmp.ftl @@ -0,0 +1,32 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.stereotype.Component; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Component("${class.className}") +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/commonpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/commonpom.ftl new file mode 100644 index 0000000..77a7291 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/commonpom.ftl @@ -0,0 +1,119 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-common + 1.0-SNAPSHOT + + ${modulePrefix}-common + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + org.projectlombok + lombok + + + + mysql + mysql-connector-java + + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/corepom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/corepom.ftl new file mode 100644 index 0000000..db9c012 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/corepom.ftl @@ -0,0 +1,143 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-core + 1.0-SNAPSHOT + + ${modulePrefix}-core + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + ${groupId} + ${modulePrefix}-api + 1.0-SNAPSHOT + + + + + ${groupId} + ${modulePrefix}-common + 1.0-SNAPSHOT + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + org.springframework.boot + spring-boot-test + + + + org.springframework + spring-test + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.0.1 + + + org.springframework.boot + spring-boot-starter + + + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/doboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/doboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/doboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoddd.ftl index 6a9ddde..41df042 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/dtoddd.ftl @@ -1,7 +1,7 @@ package ${class.packageName}; <#list imports as importClass> - import ${importClass}; +import ${importClass}; import lombok.Data; @@ -18,20 +18,24 @@ import lombok.ToString; public class ${class.className} ${class.relationClassStr}{ <#list fields as field> - /** ${field.desc} **/ + /** ${field.desc} **/ + <#list field.annotationTagList as annotation> + ${annotation} + ${field.visibility} ${field.fieldName}; <#list methods as method> /** - * - * @Description:${method.desc} - * @return ${method.returnClass} - */ - ${method.visibility} ${method.returnClass} ${method.methodName}{ - ${method.returnBody} - } + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } } \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/exeimpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/exeimpl.ftl index e6a8d75..dd3f647 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/exeimpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/exeimpl.ftl @@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -28,6 +31,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeImpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeImpl.ftl index 96f9968..8b4c6a6 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeImpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeImpl.ftl @@ -1,4 +1,4 @@ -package ${package}.facade.impl; +package ${package}.core.facadeimpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeimplddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeimplddd.ftl index 650653a..d96c04f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeimplddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/facadeimplddd.ftl @@ -3,10 +3,11 @@ package ${class.packageName}; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; - <#list imports as importClass> import ${importClass}; + + /** * @Description:${class.classDesc}接口实现类 * @Author:${class.author} @@ -14,6 +15,9 @@ import ${importClass}; * @version v1.0 */ ${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -26,6 +30,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapper.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapper.ftl index a855883..61f8f97 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapper.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapper.ftl @@ -1,7 +1,7 @@ -package ${package}.dao.mapper; +package ${package}.common.dao.mapper; import java.util.List; -import ${package}.dao.dataobject.${table.humpClassName}DO; +import ${package}.infrast.dao.dataobject.${table.humpClassName}DO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperddd.ftl index 682b735..9e03eb4 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperddd.ftl @@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Param; * @version v1.0 */ @Mapper -public interface ${class.className}{ +public interface ${class.className} ${class.relationClassStr}{ <#list methods as method> ${method.doc} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxml.ftl index 0a93342..0f9e656 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxml.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxml.ftl @@ -1,11 +1,11 @@ - + - + <#list columns as column> @@ -21,7 +21,7 @@ ${table.columnNameList} - + insert into ${table.tableName}( ${table.insertColumnNames} ) @@ -30,7 +30,7 @@ ) - + update ${table.tableName} set ${table.updateColumnNameList} @@ -41,7 +41,7 @@ select from ${table.tableName} - diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxmlddd.ftl index 7d50a9a..7357a4b 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxmlddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mapperxmlddd.ftl @@ -22,33 +22,6 @@ ${table.columnNameList} - - insert into ${table.tableName}( - ${table.insertColumnNames} - ) - values( - ${table.insertColumnNameList} - ) - - - - update ${table.tableName} - set - ${table.updateColumnNameList} - where id = <#noparse>#{id<#noparse>} - - - - - - - - delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} - <#list fields as field> ${field.fieldName} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqconsumer.ftl index 758b640..e40bf30 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqconsumer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqconsumer.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,6 +29,9 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqlistener.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqlistener.ftl index 758b640..d702d67 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqlistener.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqlistener.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,7 +29,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqproducer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqproducer.ftl index 758b640..ae624a9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqproducer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/mqproducer.ftl @@ -13,7 +13,11 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service -public class ${class.className}{ +${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ <#list fields as field> /** ${field.desc} **/ @@ -26,7 +30,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/parentpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/parentpom.ftl new file mode 100644 index 0000000..8865748 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/parentpom.ftl @@ -0,0 +1,226 @@ + + + + 4.0.0 + + ${groupId} + ${artifactId} + pom + ${version} + + ${modulePrefix}-api + ${modulePrefix}-common + ${modulePrefix}-core + + + ${artifactId} + + ${url} + + + UTF-8 + 1.8 + 1.8 + 1.8 + 2.1.9.RELEASE + 2.7.3 + 1.2.0.Final + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${r'${spring-boot.version}'} + pom + import + + + + + org.apache.dubbo + dubbo-dependencies-bom + ${r'${dubbo.version}'} + pom + import + + + + org.apache.dubbo + dubbo-spring-boot-starter + ${r'${dubbo.version}'} + + + org.apache.dubbo + dubbo + ${r'${dubbo.version}'} + + + org.springframework + spring + + + javax.servlet + servlet-api + + + log4j + log4j + + + + + + com.alibaba.spring + spring-context-support + 1.0.5 + + + + org.mapstruct + mapstruct + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-processor + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-jdk8 + ${r'${mapstruct.version}'} + + + + + commons-collections + commons-collections + 3.2.1 + + + + com.alibaba + fastjson + 1.2.72 + + + + org.springframework + spring-test + 5.1.10.RELEASE + + + + commons-lang + commons-lang + 2.4 + + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.3 + + + + + org.slf4j + slf4j-api + 1.7.28 + + + org.slf4j + slf4j-ext + 1.7.28 + + + + org.slf4j + slf4j-log4j12 + 1.7.28 + + + + org.springframework.boot + spring-boot-starter-log4j2 + ${r'${spring-boot.version}'} + + + + org.aspectj + aspectjweaver + 1.9.4 + + + + org.aspectj + aspectjrt + 1.8.13 + + + + org.assertj + assertj-core + 3.9.1 + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + + aliyun-releases + 阿里云仓库 + https://maven.aliyun.com/repository/public + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + false + + + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/service.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/service.ftl index 83cea8c..81c37e9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/service.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/service.ftl @@ -1,8 +1,8 @@ -package ${package}.service; +package ${package}.core.service; import java.util.List; -import ${package}.model.bo.${table.humpClassName}BO; +import ${package}.core.bo.${table.humpClassName}BO; /** * @Description:${table.tableComment}Service接口 diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceImpl.ftl index 66ac9dd..9c869c6 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceImpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceImpl.ftl @@ -1,12 +1,12 @@ -package ${package}.service.impl; +package ${package}.core.serviceimpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import ${package}.dao.mapper.${table.humpClassName}Mapper; -import ${package}.service.${table.humpClassName}Service; -import ${package}.model.bo.${table.humpClassName}BO; +import ${package}.common.dao.mapper.${table.humpClassName}Mapper; +import ${package}.core.service.${table.humpClassName}Service; +import ${package}.core.bo.${table.humpClassName}BO; import java.util.List; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceddd.ftl new file mode 100644 index 0000000..c22e22b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/serviceddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/test.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/test.ftl index 5638829..6cc14b8 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/test.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/test.ftl @@ -1,4 +1,4 @@ -package ${package}.core.test; +package ${package}.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +9,7 @@ import ${package}.api.dto.${table.humpClassName}DTO; import com.coderman.utils.response.ResultDataDto; import com.coderman.utils.response.ResultDto; -import ${package}.core.Application; +import ${package}.Application; import org.apache.dubbo.config.annotation.Reference; import org.springframework.boot.test.context.SpringBootTest; @@ -17,14 +17,13 @@ import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; -import com.alibaba.fastjson.JSON; import org.junit.Test; import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/testddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/testddd.ftl new file mode 100644 index 0000000..dc36d31 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/testddd.ftl @@ -0,0 +1,51 @@ +package ${package}.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +<#list imports as importClass> +import ${importClass}; + + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.Application; + +import org.apache.dubbo.config.annotation.Reference; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Rollback; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * @Description:单元测试 + * @Author:${author} + * @CreateTime:2021-06-25 09:19:38 + * @version v1.0 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +@Rollback +@Transactional +public class ${class.className}Test extends AbstractTransactionalJUnit4SpringContextTests{ + + protected Logger logger = LoggerFactory.getLogger(${class.className}Test.class); + + @Reference(url = "") + private ${class.className} ${class.className}; + + +<#list methods as method> + + @Test + public void ${method.simpleMethodNameInfo}Test(){ + //todo test + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/validator.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/validator.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/dubbo/validator.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/fast/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/fast/applicationproperties.ftl index 5e846f6..e0b6eff 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/fast/applicationproperties.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/fast/applicationproperties.ftl @@ -16,6 +16,6 @@ spring.datasource.password=root mybatis.config-locations=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #配置模型路径 -mybatis.type-aliases-package=com.coderman.codemaker.bean +mybatis.type-aliases-package=com.tianhua.codemaker.bean diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/fast/controller.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/fast/controller.ftl index 3fd0d73..ec21e92 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/fast/controller.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/fast/controller.ftl @@ -11,6 +11,8 @@ import com.coderman.utils.response.ResultDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import com.coderman.utils.error.CommonErrorEnum; + /** * @Description:${table.tableComment}控制层 @@ -38,7 +40,7 @@ public class ${table.humpClassName}Controller extends BaseController{ return ${table.humpTableName}Service.save(${table.humpTableName}Vo); } catch (Exception e) { log.error("保存失败",e); - return ResultDto.setErrorCodeMsg("保存失败"); + return ResultDto.fail(CommonErrorEnum.DEFAULT_ERROR.getErrorCode(),"保存失败"); } } @@ -55,7 +57,7 @@ public class ${table.humpClassName}Controller extends BaseController{ return ${table.humpTableName}Service.update(${table.humpTableName}Vo); } catch (Exception e) { log.error("修改失败",e); - return ResultDto.setErrorCodeMsg("修改失败"); + return ResultDto.fail(CommonErrorEnum.DEFAULT_ERROR.getErrorCode(),"修改失败"); } } @@ -82,7 +84,7 @@ public class ${table.humpClassName}Controller extends BaseController{ return ${table.humpTableName}Service.getById(id); } catch (Exception e) { log.error("获取数据失败",e); - return ResultDataDto.setErrorCodeMsg("获取数据失败"); + return ResultDataDto.fail(CommonErrorEnum.DEFAULT_ERROR.getErrorCode(), "获取数据失败"); } } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/Application.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/Application.ftl index cfa97ce..464fdbf 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/Application.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/Application.ftl @@ -1,9 +1,5 @@ package ${package}; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/IdemPotent.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/IdemPotent.ftl new file mode 100644 index 0000000..44a408a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/IdemPotent.ftl @@ -0,0 +1,28 @@ +package ${package}.domain.support.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author shenshuai + * @see + * + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface IdemPotent { + + /** + * 接口幂等的请求号 + */ + String key() default "requestNo"; + +/** +* 消息幂等的消息id 多个需要 _msgId,xxNo,sfdsdf +* 使用需要指定 msgId属性 +*/ +String msgKey() default "_msgId"; + +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/LockA.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/LockA.ftl new file mode 100644 index 0000000..d6986b0 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/LockA.ftl @@ -0,0 +1,37 @@ +package ${package}.domain.support.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LockA { + + /** + * 前缀 + */ + String prefixKey() default ""; +/** + * 锁 + */ +String key() default "orderId"; + +/** + * 默认 uuid + */ +String requestId() default "requestId"; + + +/** + * 提示消息 + */ +String msg() default "请不要重复提交"; + + +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/MqHandler.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/MqHandler.ftl new file mode 100644 index 0000000..2a1de2a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/MqHandler.ftl @@ -0,0 +1,37 @@ +package ${package}.domain.support.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MqHandler { + + /** + * 前缀 + */ + String prefixKey() default ""; +/** + * 锁 + */ +String key() default "orderId"; + +/** + * 默认 uuid + */ +String requestId() default "requestId"; + + +/** + * 提示消息 + */ +String msg() default "请不要重复提交"; + + +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/PageBO.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/PageBO.ftl index a2c2872..25a5652 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/PageBO.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/PageBO.ftl @@ -8,7 +8,7 @@ import java.util.Map; * Description:参考Mybatis_PageHelper的Page对象封装的DTO * date: 2021/10/26 * -* @author fanchunshuai +* @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @@ -77,10 +77,10 @@ public class PageBO implements Serializable { private List Items; - /** - * 针对简单场景 参数的查询map处理 - */ - private Map queryMap; + /** + * 针对简单场景 参数的查询map处理 + */ + private Map queryMap; /** * 针对复杂场景 参数的查询queryDTO对象处理 @@ -104,276 +104,12 @@ public class PageBO implements Serializable { this.queryDTO = queryDTO; } - public List getItems() { - return Items; - } - - public PageVO setItems(List items) { - Items = items; - return this; - } - - public PageVO() { - super(); - } - - public PageVO(int pageNum, int pageSize) { - this(pageNum, pageSize, true, null); - } - - public PageVO(int pageNum, int pageSize, boolean count) { - this(pageNum, pageSize, count, null); - } - - private PageVO(int pageNum, int pageSize, boolean count, Boolean reasonable) { - - if (pageNum == 1 && pageSize == Integer.MAX_VALUE) { - pageSizeZero = true; - pageSize = 0; - } - this.currentPageNum = pageNum; - this.pageSize = pageSize; - this.count = count; - calculateStartAndEndRow(); - setReasonable(reasonable); - } - - public int getNextIndex() { - if (this.currentPageNum >= this.getTotalPages()) { - this.nextPageNum = this.currentPageNum; - } else { - this.nextPageNum = this.currentPageNum + 1; - } - - return this.nextPageNum; - } - - public int getPreIndex() { - if (this.currentPageNum <= 1) { - this.prePageNum = 0; - } else { - this.prePageNum = this.currentPageNum - 1; - } - - return this.prePageNum; - } - - - public int getTotalPages() { - return totalPages; - } - - public PageVO setPages(int totalPages) { - this.totalPages = totalPages; - return this; - } - - public int getEndRow() { - return endRow; - } - - public PageVO setEndRow(int endRow) { - this.endRow = endRow; - return this; - } - - public int getCurrentPageNum() { - return currentPageNum; - } - - public PageVO setPageNum(int currentPageNum) { - //分页合理化,针对不合理的页码自动处理 - this.currentPageNum = ((reasonable != null && reasonable) && currentPageNum <= 0) ? 1 : currentPageNum; - return this; - } - - public int getPageSize() { - return pageSize; - } - - public PageVO setPageSize(int pageSize) { - this.pageSize = pageSize; - return this; - } - - public int getStartRow() { - return startRow; - } - - public PageVO setStartRow(int startRow) { - this.startRow = startRow; - return this; - } - - public long getTotalRows() { - return totalRows; - } - - public void setTotal(long totalRows) { - this.totalRows = totalRows; - if (totalRows == -1) { - totalPages = 1; - return; - } - if (pageSize > 0) { - totalPages = (int) (totalRows / pageSize + ((totalRows % pageSize == 0) ? 0 : 1)); - } else { - totalPages = 0; - } - //分页合理化,针对不合理的页码自动处理 - if ((reasonable != null && reasonable) && currentPageNum > totalPages) { - if(totalPages!=0){ - currentPageNum = totalPages; - } - calculateStartAndEndRow(); - } - } - - public Boolean getReasonable() { - return reasonable; - } - - public PageVO setReasonable(Boolean reasonable) { - if (reasonable == null) { - return this; - } - this.reasonable = reasonable; - //分页合理化,针对不合理的页码自动处理 - if (this.reasonable && this.currentPageNum <= 0) { - this.currentPageNum = 1; - calculateStartAndEndRow(); - } - return this; - } - - public Boolean getPageSizeZero() { - return pageSizeZero; - } - - public PageVO setPageSizeZero(Boolean pageSizeZero) { - if (pageSizeZero != null) { - this.pageSizeZero = pageSizeZero; - } - return this; - } - public String getOrderBy() { - return orderBy; - } - - public PageVO setOrderBy(String orderBy) { - this.orderBy = orderBy; - return (PageVO) this; - } - - public boolean isOrderByOnly() { - return orderByOnly; - } - - public void setOrderByOnly(boolean orderByOnly) { - this.orderByOnly = orderByOnly; - } - - /** - * 计算起止行号 - */ - private void calculateStartAndEndRow() { - this.startRow = this.currentPageNum > 0 ? (this.currentPageNum - 1) * this.pageSize : 0; - this.endRow = this.startRow + this.pageSize * (this.currentPageNum > 0 ? 1 : 0); - } - - public boolean isCount() { - return this.count; - } - - public PageVO setCount(boolean count) { - this.count = count; - return this; - } - - /** - * 设置页码 - * - * @param pageNum - * @return - */ - public PageVO pageNum(int pageNum) { - //分页合理化,针对不合理的页码自动处理 - this.currentPageNum = ((reasonable != null && reasonable) && pageNum <= 0) ? 1 : pageNum; - return this; - } - - /** - * 设置页面大小 - * - * @param pageSize - * @return - */ - public PageVO pageSize(int pageSize) { - this.pageSize = pageSize; - calculateStartAndEndRow(); - return this; - } - - - /** - * 设置合理化 - * - * @param reasonable - * @return - */ - public PageVO reasonable(Boolean reasonable) { - setReasonable(reasonable); - return this; - } - - /** - * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 - * - * @param pageSizeZero - * @return - */ - public PageVO pageSizeZero(Boolean pageSizeZero) { - setPageSizeZero(pageSizeZero); - return this; - } - - /** - * 指定 count 查询列 - * - * @param columnName - * @return - */ - public PageVO countColumn(String columnName) { - this.countColumn = columnName; - return this; - } - - - - public String getCountColumn() { - return countColumn; - } - - public void setCountColumn(String countColumn) { - this.countColumn = countColumn; - } + public List getItems() { + return Items; + } - @Override - public String toString() { - return "PageDTO{" + - "currentPageNum=" + currentPageNum + - ", pageSize=" + pageSize + - ", startRow=" + startRow + - ", endRow=" + endRow + - ", totalRows=" + totalRows + - ", totalPages=" + totalPages + - ", count=" + count + - ", reasonable=" + reasonable + - ", pageSizeZero=" + pageSizeZero + - ", countColumn='" + countColumn + '\'' + - ", orderBy='" + orderBy + '\'' + - ", orderByOnly=" + orderByOnly + - ", Items=" + Items + - '}'; - } - } + public PageBO setItems(List items) { + Items = items; + return this; + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/ValidationUtils.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/ValidationUtils.ftl new file mode 100644 index 0000000..935b2a9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/singleClass/ValidationUtils.ftl @@ -0,0 +1,44 @@ +package ${package}.support; + +package com.oyo.inventory.common.utils; + + +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.hibernate.validator.HibernateValidator; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import java.util.List; +import java.util.Set; + +/** + * @author kermit.liu on 2018/3/15 + */ +public class ValidationUtils { +/** +* 使用hibernate的注解来进行验证 +*/ +private static Validator validator = Validation.byProvider(HibernateValidator.class) +.configure().failFast(true).buildValidatorFactory().getValidator(); + +/** +* 功能描述:
+* 〈注解验证参数〉 +* +* @param obj obj +*/ + public static String validate(T obj) { + Set> constraintViolations = validator.validate(obj); + // 检验不合格处理 + if (CollectionUtils.isNotEmpty(constraintViolations)) { + List tipList = Lists.newArrayList(); + constraintViolations.forEach(constraintViolationImpl -> tipList.add(constraintViolationImpl.getMessage())); + return StringUtils.join(tipList, ","); + } else { + return ""; + } + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/applicationproperties.ftl index 5e846f6..e0b6eff 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/applicationproperties.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/applicationproperties.ftl @@ -16,6 +16,6 @@ spring.datasource.password=root mybatis.config-locations=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #配置模型路径 -mybatis.type-aliases-package=com.coderman.codemaker.bean +mybatis.type-aliases-package=com.tianhua.codemaker.bean diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/boddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/boddd.ftl index 1a43aca..8f2abdc 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/boddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/boddd.ftl @@ -32,6 +32,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/cmp.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/cmp.ftl new file mode 100644 index 0000000..6a43f0a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/cmp.ftl @@ -0,0 +1,32 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.stereotype.Component; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Component("${class.className}") +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controller.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controller.ftl index 3c88f6d..8a46ff3 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controller.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controller.ftl @@ -6,6 +6,8 @@ import org.slf4j.LoggerFactory; import ${package}.service.${table.humpClassName}Service; import ${package}.vo.${table.humpClassName}VO; +import ${package}.controller.BaseController; + import com.coderman.utils.response.ResultDataDto; import com.coderman.utils.response.ResultDto; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controllerddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controllerddd.ftl index 570a4e9..a334ab6 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controllerddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/controllerddd.ftl @@ -17,7 +17,10 @@ import org.springframework.web.bind.annotation.*; * @version v1.0 */ @RestController -public class ${class.className} { +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ protected Logger logger = LoggerFactory.getLogger(${class.className}.class); @@ -29,6 +32,9 @@ public class ${class.className} { <#list methods as method> ${method.doc} + <#list method.annotationTagList as annotation> + ${annotation} + @RequestMapping(value = "${method.pathValue}") public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/doboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/doboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/doboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoddd.ftl index d6243cb..41df042 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/dtoddd.ftl @@ -18,7 +18,11 @@ import lombok.ToString; public class ${class.className} ${class.relationClassStr}{ <#list fields as field> + /** ${field.desc} **/ + <#list field.annotationTagList as annotation> + ${annotation} + ${field.visibility} ${field.fieldName}; @@ -29,6 +33,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/exeimpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/exeimpl.ftl index e6a8d75..dd3f647 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/exeimpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/exeimpl.ftl @@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -28,6 +31,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/facadeimplddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/facadeimplddd.ftl new file mode 100644 index 0000000..d96c04f --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/facadeimplddd.ftl @@ -0,0 +1,43 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + +<#list methods as method> + + <#list method.annotationTagList as annotation> + ${annotation} + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapper.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapper.ftl index db78b21..26c48f9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapper.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapper.ftl @@ -1,7 +1,7 @@ package ${package}.dao.mapper; import java.util.List; -import ${package}.dao.dataobject.${table.humpClassName}DO; +import ${package}.infrast.dao.dataobject.${table.humpClassName}DO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperddd.ftl index 43102bc..09a239d 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperddd.ftl @@ -16,7 +16,7 @@ import org.apache.ibatis.annotations.Param; * @version v1.0 */ @Mapper -public interface ${class.className}{ +public interface ${class.className} ${class.relationClassStr}{ <#list methods as method> ${method.doc} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxml.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxml.ftl index 3e3c284..cf9b1a2 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxml.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxml.ftl @@ -5,7 +5,7 @@ - + <#list columns as column> @@ -22,7 +22,7 @@ ${table.columnNameList} - + insert into ${table.tableName}( ${table.insertColumnNames} ) @@ -31,7 +31,7 @@ ) - + update ${table.tableName} set ${table.updateColumnNameList} @@ -42,7 +42,7 @@ select from ${table.tableName} - diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxmlddd.ftl index 7d50a9a..7357a4b 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxmlddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mapperxmlddd.ftl @@ -22,33 +22,6 @@ ${table.columnNameList} - - insert into ${table.tableName}( - ${table.insertColumnNames} - ) - values( - ${table.insertColumnNameList} - ) - - - - update ${table.tableName} - set - ${table.updateColumnNameList} - where id = <#noparse>#{id<#noparse>} - - - - - - - - delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} - <#list fields as field> ${field.fieldName} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqconsumer.ftl index 758b640..d413e46 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqconsumer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqconsumer.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,7 +29,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqhandler.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqhandler.ftl index 758b640..4010cab 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqhandler.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqhandler.ftl @@ -27,6 +27,7 @@ public class ${class.className}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqlistener.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqlistener.ftl index 758b640..d702d67 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqlistener.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqlistener.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,7 +29,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqproducer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqproducer.ftl index 758b640..ae624a9 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqproducer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/mqproducer.ftl @@ -13,7 +13,11 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service -public class ${class.className}{ +${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ <#list fields as field> /** ${field.desc} **/ @@ -26,7 +30,11 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/msgbody.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/msgbody.ftl index e6c85cb..010efb8 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/msgbody.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/msgbody.ftl @@ -26,6 +26,7 @@ public class ${class.className}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/parentpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/parentpom.ftl new file mode 100644 index 0000000..1958c88 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/parentpom.ftl @@ -0,0 +1,204 @@ + + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.1.RELEASE + + + + ${groupId} + ${artifactId} + ${version} + + ${modulePrefix} + + http://www.example.com + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${r'${spring-alibaba-cloud.version}'} + pom + import + + + + org.springframework.cloud + spring-cloud-dependencies + ${r'${spring-cloud.version}'} + pom + import + + + + + + UTF-8 + 1.8 + 1.8 + 1.2.0.Final + Hoxton.SR3 + 2.2.0.RELEASE + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + ${r'${mapstruct.version}'} + + + + org.mapstruct + mapstruct-jdk8 + ${r'${mapstruct.version}'} + + + + org.mapstruct + mapstruct + ${r'${mapstruct.version}'} + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + org.projectlombok + lombok + + + + org.springframework.boot + spring-boot-test + + + + org.springframework + spring-test + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.0.1 + + + org.springframework.boot + spring-boot-starter + + + + + + mysql + mysql-connector-java + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter + + + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + <#if (dependency.exclusionGAContent)??> +${dependency.exclusionGAContent} + + + + + + + + + + + + + aliyun-releases + 阿里云仓库 + https://maven.aliyun.com/repository/public + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + false + + + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceImpl.ftl index 496601e..c65ab5f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceImpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceImpl.ftl @@ -1,20 +1,16 @@ -package ${package}.service.impl; +package ${package}.serviceimpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.coderman.utils.response.ResultDataDto; -import com.coderman.utils.response.ResultDto; - import ${package}.dao.mapper.${table.humpClassName}Mapper; import ${package}.service.${table.humpClassName}Service; import ${package}.bo.${table.humpClassName}BO; import java.util.List; import org.apache.commons.lang3.StringUtils; -import com.alibaba.fastjson.JSONObject; /** * @Description:${table.tableComment}Service接口实现类 diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceddd.ftl new file mode 100644 index 0000000..c22e22b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/serviceddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/test.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/test.ftl index bddd682..1c46b59 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/test.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/test.ftl @@ -1,4 +1,4 @@ -package ${package}.service.test; +package ${package}.test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +47,7 @@ public class ${table.humpClassName}ServiceTest{ ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); - System.out.println(JSON.toJSONString(resultDto)); + //System.out.println(JSON.toJSONString(resultDto)); } /** @@ -58,7 +58,7 @@ public class ${table.humpClassName}ServiceTest{ //todo test code ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); - System.out.println(JSON.toJSONString(resultDto)); + //System.out.println(JSON.toJSONString(resultDto)); } /** @@ -69,7 +69,7 @@ public class ${table.humpClassName}ServiceTest{ //todo test code long id = 1L; ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); - System.out.println(JSON.toJSONString(resultDto)); + //System.out.println(JSON.toJSONString(resultDto)); } /** @@ -79,7 +79,7 @@ public class ${table.humpClassName}ServiceTest{ public void testGetById(){ //todo test code ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); - System.out.println(JSON.toJSONString(resultDataDto)); + //System.out.println(JSON.toJSONString(resultDataDto)); } /** diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/testddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/testddd.ftl new file mode 100644 index 0000000..dc36d31 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/testddd.ftl @@ -0,0 +1,51 @@ +package ${package}.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +<#list imports as importClass> +import ${importClass}; + + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.Application; + +import org.apache.dubbo.config.annotation.Reference; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Rollback; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * @Description:单元测试 + * @Author:${author} + * @CreateTime:2021-06-25 09:19:38 + * @version v1.0 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +@Rollback +@Transactional +public class ${class.className}Test extends AbstractTransactionalJUnit4SpringContextTests{ + + protected Logger logger = LoggerFactory.getLogger(${class.className}Test.class); + + @Reference(url = "") + private ${class.className} ${class.className}; + + +<#list methods as method> + + @Test + public void ${method.simpleMethodNameInfo}Test(){ + //todo test + } + + +} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/validator.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/validator.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/validator.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voboconvert.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voboconvert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voboconvert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voddd.ftl index 5c2f634..4582614 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springboot/voddd.ftl @@ -29,6 +29,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/apipom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/apipom.ftl new file mode 100644 index 0000000..36c0261 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/apipom.ftl @@ -0,0 +1,60 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-api + 1.0-SNAPSHOT + + ${modulePrefix}-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/applicationproperties.ftl index 5e846f6..e0b6eff 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/applicationproperties.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/applicationproperties.ftl @@ -16,6 +16,6 @@ spring.datasource.password=root mybatis.config-locations=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml #配置模型路径 -mybatis.type-aliases-package=com.coderman.codemaker.bean +mybatis.type-aliases-package=com.tianhua.codemaker.bean diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/boddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/boddd.ftl index 1a43aca..8f2abdc 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/boddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/boddd.ftl @@ -32,6 +32,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/controllerddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/controllerddd.ftl index 746c312..a334ab6 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/controllerddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/controllerddd.ftl @@ -7,7 +7,7 @@ import org.slf4j.LoggerFactory; import ${importClass}; import org.springframework.beans.factory.annotation.Autowired; - +import org.springframework.web.bind.annotation.*; /** @@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @version v1.0 */ @RestController +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ protected Logger logger = LoggerFactory.getLogger(${class.className}.class); @@ -29,7 +32,10 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> ${method.doc} - @Override + <#list method.annotationTagList as annotation> + ${annotation} + + @RequestMapping(value = "${method.pathValue}") public ${method.returnClass} ${method.methodName}{ ${method.methodContent} ${method.returnBody} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/dtoddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/dtoddd.ftl index d6243cb..41df042 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/dtoddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/dtoddd.ftl @@ -18,7 +18,11 @@ import lombok.ToString; public class ${class.className} ${class.relationClassStr}{ <#list fields as field> + /** ${field.desc} **/ + <#list field.annotationTagList as annotation> + ${annotation} + ${field.visibility} ${field.fieldName}; @@ -29,6 +33,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/exeimpl.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/exeimpl.ftl index e6a8d75..dd3f647 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/exeimpl.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/exeimpl.ftl @@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className} ${class.relationClassStr}{ private Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -28,6 +31,9 @@ public class ${class.className} ${class.relationClassStr}{ <#list methods as method> + <#list method.annotationTagList as annotation> + ${annotation} + @Override public ${method.returnClass} ${method.methodName}{ ${method.methodContent} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperddd.ftl index 43102bc..09a239d 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperddd.ftl @@ -16,7 +16,7 @@ import org.apache.ibatis.annotations.Param; * @version v1.0 */ @Mapper -public interface ${class.className}{ +public interface ${class.className} ${class.relationClassStr}{ <#list methods as method> ${method.doc} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperxmlddd.ftl index 7d50a9a..a51999f 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperxmlddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mapperxmlddd.ftl @@ -22,34 +22,6 @@ ${table.columnNameList} - - insert into ${table.tableName}( - ${table.insertColumnNames} - ) - values( - ${table.insertColumnNameList} - ) - - - - update ${table.tableName} - set - ${table.updateColumnNameList} - where id = <#noparse>#{id<#noparse>} - - - - - - - - delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} - - <#list fields as field> ${field.fieldName} diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqconsumer.ftl index 758b640..e40bf30 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqconsumer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqconsumer.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,6 +29,9 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqlistener.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqlistener.ftl index 758b640..1eb2fe1 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqlistener.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqlistener.ftl @@ -13,6 +13,9 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service +<#list class.annotationTagList as annotation> +${annotation} + public class ${class.className}{ <#list fields as field> @@ -26,6 +29,9 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqproducer.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqproducer.ftl index 758b640..934b492 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqproducer.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/mqproducer.ftl @@ -13,7 +13,11 @@ import org.springframework.stereotype.Service; * @version v1.0 */ @Service -public class ${class.className}{ +${class.annotation} +<#list class.annotationTagList as annotation> +${annotation} + +public class ${class.className} ${class.relationClassStr}{ <#list fields as field> /** ${field.desc} **/ @@ -26,6 +30,9 @@ public class ${class.className}{ * @Description:${method.desc} * @return ${method.returnClass} */ + <#list method.annotationTagList as annotation> + ${annotation} + ${method.visibility} ${method.returnClass} ${method.methodName}{ ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/parentpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/parentpom.ftl new file mode 100644 index 0000000..4b7c410 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/parentpom.ftl @@ -0,0 +1,196 @@ + + + + 4.0.0 + + ${groupId} + ${artifactId} + pom + ${version} + + ${modulePrefix}-api + ${modulePrefix}-provider + + + ${artifactId} + + ${url} + + + UTF-8 + 1.8 + 1.8 + 1.8 + 2.1.9.RELEASE + 2.7.3 + 1.2.0.Final + 4.8.0 + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${r'${spring-boot.version}'} + pom + import + + + + com.alibaba.spring + spring-context-support + 1.0.5 + + + + org.mapstruct + mapstruct + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-processor + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-jdk8 + ${r'${mapstruct.version}'} + + + + + commons-collections + commons-collections + 3.2.1 + + + + com.alibaba + fastjson + 1.2.72 + + + + + commons-lang + commons-lang + 2.4 + + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.3 + + + + + org.slf4j + slf4j-api + 1.7.28 + + + org.slf4j + slf4j-ext + 1.7.28 + + + + org.slf4j + slf4j-log4j12 + 1.7.28 + + + + org.springframework.boot + spring-boot-starter-log4j2 + ${r'${spring-boot.version}'} + + + + org.aspectj + aspectjweaver + 1.9.4 + + + + org.aspectj + aspectjrt + 1.8.13 + + + + org.assertj + assertj-core + 3.9.1 + + + + + org.apache.rocketmq + rocketmq-client + ${r'${rocketmq.version}'} + + + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + + aliyun-releases + 阿里云仓库 + https://maven.aliyun.com/repository/public + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + false + + + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/providerpom.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/providerpom.ftl new file mode 100644 index 0000000..f3836a9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/providerpom.ftl @@ -0,0 +1,122 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-provider + 1.0-SNAPSHOT + + ${modulePrefix}-provider + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + ${groupId} + ${modulePrefix}-api + 1.0-SNAPSHOT + + + + + ${groupId} + ${modulePrefix}-common + 1.0-SNAPSHOT + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + <#if (dependency.version)??> + ${dependency.version} + + <#if (dependency.scope)??> + ${dependency.scope} + + <#if (dependency.type)??> + ${dependency.type} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/serviceddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/serviceddd.ftl new file mode 100644 index 0000000..c22e22b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/serviceddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/validator.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/validator.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/validator.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/voddd.ftl b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/voddd.ftl index 5c2f634..4582614 100644 --- a/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/voddd.ftl +++ b/codemaker-parent/codemaker-core/src/main/resources/template/springcloud/voddd.ftl @@ -29,6 +29,7 @@ public class ${class.className} ${class.relationClassStr}{ * @return ${method.returnClass} */ ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} ${method.returnBody} } diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/abstractexe.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/abstractexe.ftl new file mode 100644 index 0000000..32d6d57 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/abstractexe.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public abstract class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public abstract ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/acl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/acl.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/acl.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/aclimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/aclimpl.ftl new file mode 100644 index 0000000..0c1a4ee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/aclimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @${field.annotation} + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/abstractexe.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/abstractexe.ftl new file mode 100644 index 0000000..32d6d57 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/abstractexe.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public abstract class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public abstract ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/acl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/acl.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/acl.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/aclimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/aclimpl.ftl new file mode 100644 index 0000000..0c1a4ee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/aclimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @${field.annotation} + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/abstractexe.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/abstractexe.ftl new file mode 100644 index 0000000..32d6d57 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/abstractexe.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public abstract class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public abstract ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/acl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/acl.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/acl.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/acl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/acl.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/acl.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/aclimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/aclimpl.ftl new file mode 100644 index 0000000..0c1a4ee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/aclimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @${field.annotation} + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/acl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/acl.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/acl.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/aclimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/aclimpl.ftl new file mode 100644 index 0000000..0c1a4ee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/aclimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @${field.annotation} + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file -- Gitee From 5ad486ef469621855b8b4b8f56132d65434a973c Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:20:03 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4template=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotationClass/LockA.properties | 3 + .../annotationClass/Transactional.properties | 3 + .../TransactionalEventListener.properties | 3 + .../src/test/resources/component/readme | 0 .../src/test/resources/mapper/sqlMapper.xml | 6 +- .../template/SpringApplicationContext.ftl | 40 +++ .../src/test/resources/template/api/http.ftl | 25 ++ .../src/test/resources/template/api/rpc.ftl | 24 ++ .../test/resources/template/application.ftl | 40 +++ .../template/applicationproperties.ftl | 21 ++ .../resources/template/baseController.ftl | 45 ++++ .../template/cola/AppEventPublisher.ftl | 18 ++ .../resources/template/cola/BaseEvent.ftl | 9 + .../cola/SpringApplicationContext.ftl | 40 +++ .../resources/template/cola/adapterpom.ftl | 109 +++++++++ .../test/resources/template/cola/apppom.ftl | 140 +++++++++++ .../template/cola/baseController.ftl | 45 ++++ .../src/test/resources/template/cola/bo.ftl | 24 ++ .../test/resources/template/cola/boddd.ftl | 37 +++ .../test/resources/template/cola/cache.ftl | 34 +++ .../resources/template/cola/clientpom.ftl | 52 ++++ .../resources/template/cola/controller.ftl | 103 ++++++++ .../resources/template/cola/controllerddd.ftl | 38 +++ .../test/resources/template/cola/convert.ftl | 30 +++ .../src/test/resources/template/cola/do.ftl | 24 ++ .../resources/template/cola/domainpom.ftl | 49 ++++ .../src/test/resources/template/cola/dto.ftl | 25 ++ .../test/resources/template/cola/dtoddd.ftl | 37 +++ .../src/test/resources/template/cola/enum.ftl | 47 ++++ .../test/resources/template/cola/event.ftl | 35 +++ .../test/resources/template/cola/exeimpl.ftl | 38 +++ .../test/resources/template/cola/facade.ftl | 68 ++++++ .../resources/template/cola/facadeaop.ftl | 37 +++ .../resources/template/cola/facadeddd.ftl | 20 ++ .../resources/template/cola/facadeimpl.ftl | 72 ++++++ .../resources/template/cola/facadeimplddd.ftl | 37 +++ .../test/resources/template/cola/factory.ftl | 34 +++ .../test/resources/template/cola/feign.ftl | 68 ++++++ .../resources/template/cola/feignapipom.ftl | 74 ++++++ .../test/resources/template/cola/feignddd.ftl | 22 ++ .../template/cola/feignproviderpom.ftl | 84 +++++++ .../test/resources/template/cola/gataway.ftl | 20 ++ .../resources/template/cola/gatawayimpl.ftl | 39 +++ .../resources/template/cola/infrastpom.ftl | 108 +++++++++ .../test/resources/template/cola/mapper.ftl | 65 +++++ .../resources/template/cola/mapperddd.ftl | 25 ++ .../resources/template/cola/mapperxml.ftl | 62 +++++ .../resources/template/cola/mapperxmlddd.ftl | 59 +++++ .../resources/template/cola/mqconsumer.ftl | 34 +++ .../resources/template/cola/mqhandler.ftl | 34 +++ .../resources/template/cola/mqlistener.ftl | 34 +++ .../resources/template/cola/mqproducer.ftl | 34 +++ .../test/resources/template/cola/msgbody.ftl | 35 +++ .../resources/template/cola/parentpom.ftl | 227 ++++++++++++++++++ .../test/resources/template/cola/service.ftl | 62 +++++ .../resources/template/cola/serviceImpl.ftl | 58 +++++ .../test/resources/template/cola/startpom.ftl | 55 +++++ .../src/test/resources/template/cola/test.ftl | 107 +++++++++ .../resources/template/cola/valueobject.ftl | 36 +++ .../src/test/resources/template/cola/vo.ftl | 33 +++ .../test/resources/template/cola/voddd.ftl | 36 +++ .../resources/template/config/app_sql.ftl | 15 ++ .../config/application_properties.ftl | 15 ++ .../template/config/log4j_properties.ftl | 10 + .../template/config/mybatis-config_xml.ftl | 41 ++++ .../test/resources/template/controller.ftl | 103 ++++++++ .../template/dubbo/AppEventPublisher.ftl | 18 ++ .../resources/template/dubbo/BaseEvent.ftl | 9 + .../dubbo/SpringApplicationContext.ftl | 25 ++ .../resources/template/dubbo/application.ftl | 26 ++ .../template/dubbo/applicationproperties.ftl | 21 ++ .../src/test/resources/template/dubbo/bo.ftl | 24 ++ .../test/resources/template/dubbo/boddd.ftl | 39 +++ .../test/resources/template/dubbo/cache.ftl | 34 +++ .../test/resources/template/dubbo/convert.ftl | 30 +++ .../src/test/resources/template/dubbo/do.ftl | 24 ++ .../src/test/resources/template/dubbo/dto.ftl | 25 ++ .../test/resources/template/dubbo/dtoddd.ftl | 37 +++ .../test/resources/template/dubbo/enum.ftl | 47 ++++ .../test/resources/template/dubbo/event.ftl | 35 +++ .../test/resources/template/dubbo/exeimpl.ftl | 38 +++ .../test/resources/template/dubbo/facade.ftl | 66 +++++ .../resources/template/dubbo/facadeImpl.ftl | 72 ++++++ .../resources/template/dubbo/facadeaop.ftl | 37 +++ .../resources/template/dubbo/facadeddd.ftl | 20 ++ .../template/dubbo/facadeimplddd.ftl | 36 +++ .../test/resources/template/dubbo/factory.ftl | 34 +++ .../test/resources/template/dubbo/gataway.ftl | 23 ++ .../resources/template/dubbo/gatawayimpl.ftl | 39 +++ .../test/resources/template/dubbo/mapper.ftl | 67 ++++++ .../resources/template/dubbo/mapperddd.ftl | 24 ++ .../resources/template/dubbo/mapperxml.ftl | 62 +++++ .../resources/template/dubbo/mapperxmlddd.ftl | 59 +++++ .../resources/template/dubbo/mqconsumer.ftl | 34 +++ .../resources/template/dubbo/mqhandler.ftl | 34 +++ .../resources/template/dubbo/mqlistener.ftl | 34 +++ .../resources/template/dubbo/mqproducer.ftl | 34 +++ .../test/resources/template/dubbo/msgbody.ftl | 33 +++ .../test/resources/template/dubbo/service.ftl | 62 +++++ .../resources/template/dubbo/serviceImpl.ftl | 58 +++++ .../test/resources/template/dubbo/test.ftl | 102 ++++++++ .../resources/template/dubbo/valueobject.ftl | 36 +++ .../resources/template/dynamicddd/boddd.ftl | 36 +++ .../resources/template/dynamicddd/dtoddd.ftl | 25 ++ .../resources/template/dynamicddd/enum.ftl | 47 ++++ .../resources/template/dynamicddd/event.ftl | 35 +++ .../resources/template/dynamicddd/exeimpl.ftl | 38 +++ .../resources/template/dynamicddd/factory.ftl | 34 +++ .../resources/template/dynamicddd/gataway.ftl | 23 ++ .../template/dynamicddd/gatawayimpl.ftl | 39 +++ .../template/dynamicddd/mqconsumer.ftl | 34 +++ .../template/dynamicddd/mqhandler.ftl | 34 +++ .../template/dynamicddd/mqproducer.ftl | 34 +++ .../resources/template/dynamicddd/msgbody.ftl | 33 +++ .../resources/template/dynamicddd/service.ftl | 70 ++++++ .../template/dynamicddd/valueobject.ftl | 36 +++ .../src/test/resources/template/entity.ftl | 33 +++ .../fast/SpringApplicationContext.ftl | 40 +++ .../resources/template/fast/application.ftl | 47 ++++ .../template/fast/applicationproperties.ftl | 21 ++ .../template/fast/baseController.ftl | 45 ++++ .../resources/template/fast/controller.ftl | 113 +++++++++ .../test/resources/template/fast/entity.ftl | 24 ++ .../test/resources/template/fast/mapper.ftl | 69 ++++++ .../resources/template/fast/mapperxml.ftl | 49 ++++ .../test/resources/template/fast/service.ftl | 72 ++++++ .../resources/template/fast/serviceImpl.ftl | 77 ++++++ .../src/test/resources/template/fast/test.ftl | 107 +++++++++ .../src/test/resources/template/fast/vo.ftl | 25 ++ .../src/test/resources/template/mapper.ftl | 69 ++++++ .../src/test/resources/template/mapperxml.ftl | 57 +++++ .../src/test/resources/template/service.ftl | 72 ++++++ .../test/resources/template/serviceImpl.ftl | 71 ++++++ .../singleClass/AppEventPublisher.ftl | 21 ++ .../template/singleClass/Application.ftl | 28 +++ .../resources/template/singleClass/BaseBO.ftl | 40 +++ .../template/singleClass/BaseController.ftl | 45 ++++ .../template/singleClass/BaseDTO.ftl | 13 + .../template/singleClass/BaseEvent.ftl | 9 + .../template/singleClass/FacadeAspect.ftl | 37 +++ .../resources/template/singleClass/LockA.ftl | 37 +++ .../template/singleClass/MqHandler.ftl | 37 +++ .../resources/template/singleClass/PageBO.ftl | 115 +++++++++ .../singleClass/SpringApplicationContext.ftl | 25 ++ .../resources/template/singleClass/pom.ftl | 73 ++++++ .../template/springboot/AppEventPublisher.ftl | 18 ++ .../template/springboot/BaseEvent.ftl | 9 + .../springboot/SpringApplicationContext.ftl | 40 +++ .../template/springboot/application.ftl | 28 +++ .../springboot/applicationproperties.ftl | 21 ++ .../template/springboot/baseController.ftl | 45 ++++ .../test/resources/template/springboot/bo.ftl | 24 ++ .../resources/template/springboot/boddd.ftl | 39 +++ .../resources/template/springboot/cache.ftl | 34 +++ .../template/springboot/controller.ftl | 103 ++++++++ .../template/springboot/controllerddd.ftl | 38 +++ .../resources/template/springboot/convert.ftl | 30 +++ .../test/resources/template/springboot/do.ftl | 24 ++ .../resources/template/springboot/dto.ftl | 25 ++ .../resources/template/springboot/dtoddd.ftl | 36 +++ .../resources/template/springboot/entity.ftl | 33 +++ .../resources/template/springboot/enum.ftl | 47 ++++ .../resources/template/springboot/event.ftl | 35 +++ .../resources/template/springboot/exeimpl.ftl | 38 +++ .../resources/template/springboot/factory.ftl | 34 +++ .../resources/template/springboot/gataway.ftl | 23 ++ .../template/springboot/gatawayimpl.ftl | 39 +++ .../resources/template/springboot/mapper.ftl | 68 ++++++ .../template/springboot/mapperddd.ftl | 26 ++ .../template/springboot/mapperxml.ftl | 62 +++++ .../template/springboot/mapperxmlddd.ftl | 59 +++++ .../template/springboot/mqconsumer.ftl | 34 +++ .../template/springboot/mqhandler.ftl | 34 +++ .../template/springboot/mqlistener.ftl | 34 +++ .../template/springboot/mqproducer.ftl | 34 +++ .../resources/template/springboot/msgbody.ftl | 33 +++ .../resources/template/springboot/service.ftl | 69 ++++++ .../template/springboot/serviceImpl.ftl | 77 ++++++ .../resources/template/springboot/test.ftl | 107 +++++++++ .../template/springboot/valueobject.ftl | 36 +++ .../test/resources/template/springboot/vo.ftl | 33 +++ .../resources/template/springboot/voddd.ftl | 36 +++ .../springcloud/AppEventPublisher.ftl | 18 ++ .../template/springcloud/BaseEvent.ftl | 9 + .../springcloud/SpringApplicationContext.ftl | 40 +++ .../template/springcloud/application.ftl | 28 +++ .../springcloud/applicationproperties.ftl | 21 ++ .../template/springcloud/baseController.ftl | 45 ++++ .../resources/template/springcloud/bo.ftl | 24 ++ .../resources/template/springcloud/boddd.ftl | 39 +++ .../resources/template/springcloud/cache.ftl | 34 +++ .../template/springcloud/controller.ftl | 103 ++++++++ .../template/springcloud/controllerddd.ftl | 38 +++ .../template/springcloud/convert.ftl | 30 +++ .../resources/template/springcloud/do.ftl | 24 ++ .../resources/template/springcloud/dto.ftl | 25 ++ .../resources/template/springcloud/dtoddd.ftl | 36 +++ .../resources/template/springcloud/entity.ftl | 33 +++ .../resources/template/springcloud/enum.ftl | 47 ++++ .../resources/template/springcloud/event.ftl | 35 +++ .../template/springcloud/exeimpl.ftl | 38 +++ .../template/springcloud/factory.ftl | 34 +++ .../resources/template/springcloud/feign.ftl | 68 ++++++ .../template/springcloud/feigncontroller.ftl | 103 ++++++++ .../springcloud/feigncontrollerddd.ftl | 38 +++ .../template/springcloud/feignddd.ftl | 22 ++ .../template/springcloud/gataway.ftl | 23 ++ .../template/springcloud/gatawayimpl.ftl | 39 +++ .../resources/template/springcloud/mapper.ftl | 68 ++++++ .../template/springcloud/mapperddd.ftl | 26 ++ .../template/springcloud/mapperxml.ftl | 62 +++++ .../template/springcloud/mapperxmlddd.ftl | 59 +++++ .../template/springcloud/mqconsumer.ftl | 34 +++ .../template/springcloud/mqhandler.ftl | 34 +++ .../template/springcloud/mqlistener.ftl | 34 +++ .../template/springcloud/mqproducer.ftl | 34 +++ .../template/springcloud/msgbody.ftl | 33 +++ .../template/springcloud/service.ftl | 69 ++++++ .../template/springcloud/serviceImpl.ftl | 77 ++++++ .../resources/template/springcloud/test.ftl | 107 +++++++++ .../template/springcloud/valueobject.ftl | 36 +++ .../resources/template/springcloud/vo.ftl | 33 +++ .../resources/template/springcloud/voddd.ftl | 36 +++ .../src/test/resources/template/test.ftl | 107 +++++++++ .../src/test/resources/template/vo.ftl | 33 +++ 225 files changed, 9772 insertions(+), 3 deletions(-) create mode 100644 codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/LockA.properties create mode 100644 codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/Transactional.properties create mode 100644 codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/TransactionalEventListener.properties rename doc/baseDB.md => codemaker-parent/codemaker-core/src/test/resources/component/readme (100%) create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/api/http.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/api/rpc.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/applicationproperties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/baseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/AppEventPublisher.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/BaseEvent.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/adapterpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/apppom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/baseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/bo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/boddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/cache.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/clientpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/controller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/controllerddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/convert.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/do.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/domainpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/dto.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/dtoddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/enum.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/event.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/exeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/facade.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeaop.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimplddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/factory.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/feign.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/feignapipom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/feignddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/feignproviderpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/gataway.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/gatawayimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/infrastpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxmlddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mqconsumer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mqhandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mqlistener.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/mqproducer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/msgbody.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/parentpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/startpom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/valueobject.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/vo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/cola/voddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/config/app_sql.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/config/application_properties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/config/log4j_properties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/config/mybatis-config_xml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/controller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/AppEventPublisher.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/BaseEvent.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/applicationproperties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/bo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/boddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/cache.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/convert.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/do.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dto.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dtoddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/enum.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/event.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/exeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facade.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeaop.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeimplddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/factory.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gataway.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gatawayimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxmlddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqconsumer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqhandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqlistener.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqproducer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/msgbody.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dubbo/valueobject.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/boddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/dtoddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/enum.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/event.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/exeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/factory.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gataway.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gatawayimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqconsumer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqhandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqproducer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/msgbody.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/valueobject.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/entity.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/applicationproperties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/baseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/controller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/entity.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/fast/vo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/AppEventPublisher.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/Application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseBO.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseDTO.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseEvent.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/FacadeAspect.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/LockA.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/MqHandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/PageBO.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/singleClass/pom.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/AppEventPublisher.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/BaseEvent.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/applicationproperties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/baseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/bo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/boddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/cache.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/controller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/controllerddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/convert.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/do.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/dto.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/dtoddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/entity.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/enum.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/event.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/exeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/factory.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/gataway.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/gatawayimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxmlddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqconsumer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqhandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqlistener.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqproducer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/msgbody.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/valueobject.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/vo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springboot/voddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/AppEventPublisher.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/BaseEvent.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/SpringApplicationContext.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/application.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/applicationproperties.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/baseController.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/bo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/boddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/cache.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controllerddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/convert.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/do.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dto.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dtoddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/entity.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/enum.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/event.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/exeimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/factory.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feign.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontroller.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontrollerddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feignddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gataway.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gatawayimpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapper.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxml.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxmlddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqconsumer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqhandler.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqlistener.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqproducer.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/msgbody.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/service.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/serviceImpl.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/valueobject.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/vo.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/springcloud/voddd.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/test.ftl create mode 100644 codemaker-parent/codemaker-core/src/test/resources/template/vo.ftl diff --git a/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/LockA.properties b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/LockA.properties new file mode 100644 index 0000000..1bbe35c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/LockA.properties @@ -0,0 +1,3 @@ +packageName=${package}.domain.support.annotations +classAlias=@L +annotation= @Lock(key = "requestNo") \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/Transactional.properties b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/Transactional.properties new file mode 100644 index 0000000..6624287 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/Transactional.properties @@ -0,0 +1,3 @@ +packageName=org.springframework.transaction.annotation.Transactional +classAlias=@T +annotation=@Transactional(rollbackFor = Exception.class) \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/TransactionalEventListener.properties b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/TransactionalEventListener.properties new file mode 100644 index 0000000..f27dc80 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/component/annotationClass/TransactionalEventListener.properties @@ -0,0 +1,3 @@ +packageName=org.springframework.transaction.event.TransactionalEventListener +classAlias=@TE +annotation=@TransactionalEventListener(fallbackExecution = true) \ No newline at end of file diff --git a/doc/baseDB.md b/codemaker-parent/codemaker-core/src/test/resources/component/readme similarity index 100% rename from doc/baseDB.md rename to codemaker-parent/codemaker-core/src/test/resources/component/readme diff --git a/codemaker-parent/codemaker-core/src/test/resources/mapper/sqlMapper.xml b/codemaker-parent/codemaker-core/src/test/resources/mapper/sqlMapper.xml index 9dfd0f5..294da02 100644 --- a/codemaker-parent/codemaker-core/src/test/resources/mapper/sqlMapper.xml +++ b/codemaker-parent/codemaker-core/src/test/resources/mapper/sqlMapper.xml @@ -1,9 +1,9 @@ - + - SELECT TABLE_NAME AS tableName ,COLUMN_NAME columnName, COLUMN_DEFAULT AS columnDefaultValue,DATA_TYPE AS dataType, EXTRA AS extraInfo ,COLUMN_KEY AS columnKey,IS_NULLABLE AS isNullable, @@ -11,7 +11,7 @@ WHERE TABLE_SCHEMA = #{dbName} - SELECT TABLE_NAME AS tableName,TABLE_COMMENT AS tableComment FROM information_schema.TABLES WHERE TABLE_SCHEMA = #{dbName} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/SpringApplicationContext.ftl new file mode 100644 index 0000000..f00b4e9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/SpringApplicationContext.ftl @@ -0,0 +1,40 @@ +/* + * Copyright 2014 Jeanfrancois Arcand + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + package ${package}.context; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/api/http.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/api/http.ftl new file mode 100644 index 0000000..92d57ee --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/api/http.ftl @@ -0,0 +1,25 @@ +## 模块-${moduleDesc} + + +### API列表 +<#list apiList as api> + +#### ${api.interfaceDesc} +1. 访问路径:${api.httpPath} +2. 访问方式: +3. 接口参数: + +| 属性名 | 类型 | 描述 | 是否必填 | +| ---- | ---- | ---- | ---- | + <#list api.paramBeanList as param> +| ${param.fieldName} | ${param.fieldType} | ${param.fieldDesc} | ${param.nullable} | + + + + +4. 返回值:${api.returnClass} + + + +### 公共说明 + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/api/rpc.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/api/rpc.ftl new file mode 100644 index 0000000..c1afbf9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/api/rpc.ftl @@ -0,0 +1,24 @@ +## 模块-${moduleDesc} + +### 接口签名 + +${moduleApi} + + +### API列表 +<#list apiList as api> + +#### ${api.interfaceDesc} +1. 接口签名:${api.interfaceName} +2. 接口参数: + +| 属性名 | 类型 | 描述 | 是否必填 | +| ---- | ---- | ---- | ---- | +<#list api.paramBeanList as param> +| ${param.fieldName} | ${param.fieldType} | ${param.fieldDesc} | ${param.nullable} | + +3. 返回值:${api.returnClass} + + +### 公共说明 + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/application.ftl new file mode 100644 index 0000000..b64ca55 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/application.ftl @@ -0,0 +1,40 @@ +package ${package}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.web.client.RestTemplate; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@EnableDiscoveryClient +@ComponentScan({"com.lightsnail.**","com.alibaba.nacos","com.coderman.**"}) +public class Application { + @LoadBalanced + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/applicationproperties.ftl new file mode 100644 index 0000000..e0b6eff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/applicationproperties.ftl @@ -0,0 +1,21 @@ +server.port=8083 +management.port=8073 + +# 跨域 +endpoints.cors.allowed-origins=http://127.0.0.1:8083 +endpoints.cors.allowed-methods=GET,POST + + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/coder_bank_product?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/baseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/baseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/baseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/AppEventPublisher.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/AppEventPublisher.ftl new file mode 100644 index 0000000..a460444 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/AppEventPublisher.ftl @@ -0,0 +1,18 @@ +package ${package}.utils; + +import ${package}.domain.event.BaseEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class AppEventPublisher { + + @Autowired + private ApplicationContext applicationContext; + + public void publish(T t) { + applicationContext.publishEvent(t); + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/BaseEvent.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/BaseEvent.ftl new file mode 100644 index 0000000..4ff2d93 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/BaseEvent.ftl @@ -0,0 +1,9 @@ +package ${package}.domain.event; + +import org.springframework.context.ApplicationEvent; + +public class BaseEvent extends ApplicationEvent { + public BaseEvent(Object source) { + super(source); + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/SpringApplicationContext.ftl new file mode 100644 index 0000000..a6e7b63 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/SpringApplicationContext.ftl @@ -0,0 +1,40 @@ +/* + * Copyright 2014 Jeanfrancois Arcand + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + package ${package}.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/adapterpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/adapterpom.ftl new file mode 100644 index 0000000..90d7479 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/adapterpom.ftl @@ -0,0 +1,109 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-adapter + 1.0-SNAPSHOT + + ${modulePrefix}-adapter + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + ${groupId} + ${modulePrefix}-app + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/apppom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/apppom.ftl new file mode 100644 index 0000000..c91ce56 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/apppom.ftl @@ -0,0 +1,140 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-app + 1.0-SNAPSHOT + + ${modulePrefix}-app + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + + org.springframework.boot + spring-boot-test + + + org.springframework + spring-test + + + + + org.projectlombok + lombok + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo + + + + + + org.apache.dubbo + dubbo-registry-nacos + + + com.alibaba.nacos + nacos-client + + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.aspectj + aspectjweaver + + + + org.assertj + assertj-core + + + + ${groupId} + ${modulePrefix}-client + 1.0-SNAPSHOT + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + + + ${groupId} + ${modulePrefix}-infrast + 1.0-SNAPSHOT + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/baseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/baseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/baseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/bo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/bo.ftl new file mode 100644 index 0000000..79fea9d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/bo.ftl @@ -0,0 +1,24 @@ +package ${package}.model.bo; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}BO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}BO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/boddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/boddd.ftl new file mode 100644 index 0000000..6107567 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/boddd.ftl @@ -0,0 +1,37 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/cache.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/cache.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/cache.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/clientpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/clientpom.ftl new file mode 100644 index 0000000..db135d9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/clientpom.ftl @@ -0,0 +1,52 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-client + 1.0-SNAPSHOT + + ${modulePrefix}-client + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/controller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/controller.ftl new file mode 100644 index 0000000..3c88f6d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/controller.ftl @@ -0,0 +1,103 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${table.humpClassName}Controller extends BaseController{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}Controller.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto add(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/controllerddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/controllerddd.ftl new file mode 100644 index 0000000..570a4e9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/controllerddd.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${class.className} { + + protected Logger logger = LoggerFactory.getLogger(${class.className}.class); + +<#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + +${method.doc} + @RequestMapping(value = "${method.pathValue}") + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/convert.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/convert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/convert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/do.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/do.ftl new file mode 100644 index 0000000..5cb6980 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/do.ftl @@ -0,0 +1,24 @@ +package ${packageInfrast}.dao.dataobject; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}DO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}DO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/domainpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/domainpom.ftl new file mode 100644 index 0000000..941dc81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/domainpom.ftl @@ -0,0 +1,49 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + ${modulePrefix}-domain + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + org.projectlombok + lombok + + + + org.springframework + spring-context + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/dto.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/dto.ftl new file mode 100644 index 0000000..12465ba --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/dto.ftl @@ -0,0 +1,25 @@ +package ${package}.api.dto; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; +import java.io.Serializable; + + +/** +* @Description:${table.tableComment}DTO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}DTO implements Serializable { + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/dtoddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/dtoddd.ftl new file mode 100644 index 0000000..9d21fd6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/dtoddd.ftl @@ -0,0 +1,37 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + +/** +* @Description:${class.classDesc}类 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + +<#list fields as field> + /** ${field.desc} **/ + + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/enum.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/enum.ftl new file mode 100644 index 0000000..a1b21d0 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/enum.ftl @@ -0,0 +1,47 @@ +package ${class.packageName}; + +import lombok.Getter; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Getter +public enum ${class.className}{ + + /** + * + */ + <#list enums as enumValue> + ${enumValue}, + + ; + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + + ${class.className}(${class.constructParamStr}){ + <#list bodys as body> + ${body}; + + } + + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public static ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/event.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/event.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/event.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/exeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/exeimpl.ftl new file mode 100644 index 0000000..e6a8d75 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/exeimpl.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ${class.packageName}.${class.className}; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/facade.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facade.ftl new file mode 100644 index 0000000..25af93e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facade.ftl @@ -0,0 +1,68 @@ +package ${package}.api.facade; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.dto.${table.humpClassName}DTO; + +/** + * @Description:${table.tableComment}Facade接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Facade{ + + /** + * @Description:新增${table.tableComment} + * @author: + * @param dto + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}DTO dto) throws Exception; + + /** + * + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * + * @Description: 通过id查询 + * @param @param id + * @return ResultDataDto<${table.humpClassName}DTO> + * @throws + */ + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * @Description:修改 + * @param @param ${table.humpTableName}DTO + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}DTO ${table.humpTableName}DTO) throws Exception; + + + /** + * @Description:分页查询记录 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getPageList(PageDTO pageDto) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeaop.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeaop.ftl new file mode 100644 index 0000000..a550980 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeaop.ftl @@ -0,0 +1,37 @@ +package ${package}.core.aop; + + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.reflection.ExceptionUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** +* +*/ +@Component +@Aspect +@Slf4j +public class FacadeServiceAop { + @Around(value = "execution( public * ${package}.core.facade.impl..*(..))") + public Object transferException(ProceedingJoinPoint joinPoint) throws Exception { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + try { + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(joinPoint.getArgs())); + Object result = joinPoint.proceed(); + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(result)); + return result; + } catch (Throwable exception) { + throw new Exception(); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeddd.ftl new file mode 100644 index 0000000..2ccce45 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public interface ${class.className}{ +<#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimpl.ftl new file mode 100644 index 0000000..bc8bcef --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimpl.ftl @@ -0,0 +1,72 @@ +package ${package}.app.facadeimpl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.apache.dubbo.config.annotation.Service; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.facade.${table.humpClassName}Facade; +import ${package}.api.dto.${table.humpClassName}DTO; + +import java.util.List; + +/** + * @Description:${table.tableComment}Facade接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}FacadeImpl implements ${table.humpClassName}Facade{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + @Override + public ResultDto save(${table.humpClassName}DTO dto) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + + @Override + public ResultDto delete(Long id) { + ResultDto resultDto = new ResultDto(); + logger.info("${table.humpTableName}Service.delete,id="+id); + //todo impl code + return resultDto; + } + + @Override + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) { + ResultDataDto<${table.humpClassName}DTO> resultDataDto = new ResultDataDto<${table.humpClassName}DTO>(); + logger.info("${table.humpTableName}Service.getById,id="+id); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDataDto> getAll() { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDto update(${table.humpClassName}DTO dto) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + + @Override + public ResultDataDto> getPageList(PageDTO pageDto) { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimplddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimplddd.ftl new file mode 100644 index 0000000..ea57774 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/facadeimplddd.ftl @@ -0,0 +1,37 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +${class.annotation} +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + +<#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/factory.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/factory.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/factory.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/feign.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feign.ftl new file mode 100644 index 0000000..25af93e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feign.ftl @@ -0,0 +1,68 @@ +package ${package}.api.facade; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.dto.${table.humpClassName}DTO; + +/** + * @Description:${table.tableComment}Facade接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Facade{ + + /** + * @Description:新增${table.tableComment} + * @author: + * @param dto + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}DTO dto) throws Exception; + + /** + * + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * + * @Description: 通过id查询 + * @param @param id + * @return ResultDataDto<${table.humpClassName}DTO> + * @throws + */ + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * @Description:修改 + * @param @param ${table.humpTableName}DTO + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}DTO ${table.humpTableName}DTO) throws Exception; + + + /** + * @Description:分页查询记录 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getPageList(PageDTO pageDto) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignapipom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignapipom.ftl new file mode 100644 index 0000000..8c0f2fc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignapipom.ftl @@ -0,0 +1,74 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + com.codemaker.cola + ${modulePrefix}-feign-api + 1.0-SNAPSHOT + + ${modulePrefix}-feign-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignddd.ftl new file mode 100644 index 0000000..9607631 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignddd.ftl @@ -0,0 +1,22 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +${class.annotation} +public interface ${class.className}{ +<#list methods as method> + +${method.doc} + @RequestMapping(value = "${method.pathValue}") + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignproviderpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignproviderpom.ftl new file mode 100644 index 0000000..9421b19 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/feignproviderpom.ftl @@ -0,0 +1,84 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + com.codemaker.cola + ${modulePrefix}-feign-api + 1.0-SNAPSHOT + + ${modulePrefix}-feign-api + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.11 + test + + + + org.projectlombok + lombok + + + + org.slf4j + slf4j-ext + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-log4j12 + + + + org.springframework + spring-context + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + com.codemaker.cola + cola-app + 1.0-SNAPSHOT + + + + com.codemaker.cola + cola-domain + 1.0-SNAPSHOT + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/gataway.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/gataway.ftl new file mode 100644 index 0000000..c22e22b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/gataway.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/gatawayimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/gatawayimpl.ftl new file mode 100644 index 0000000..6f4af81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/gatawayimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/infrastpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/infrastpom.ftl new file mode 100644 index 0000000..a43e582 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/infrastpom.ftl @@ -0,0 +1,108 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-infrast + 1.0-SNAPSHOT + + ${modulePrefix}-infrast + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-context + + + + ${groupId} + ${modulePrefix}-domain + 1.0-SNAPSHOT + + + + + org.slf4j + slf4j-api + + + + org.slf4j + slf4j-ext + + + + org.slf4j + slf4j-log4j12 + + + + org.mapstruct + mapstruct-processor + + + + org.mapstruct + mapstruct-jdk8 + + + + org.mapstruct + mapstruct + + + + org.mybatis + mybatis + 3.4.6 + compile + + + + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapper.ftl new file mode 100644 index 0000000..c66fddf --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapper.ftl @@ -0,0 +1,65 @@ +package ${packageInfrast}.dao.mapper; + +import java.util.List; +import ${packageInfrast}.dao.dataobject.${table.humpClassName}DO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Mapper +public interface ${table.humpClassName}Mapper{ + + /** + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public long insert(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description: 通过id删除数据 + * @param id + * @return int + */ + public int deleteById(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}DO> + */ + public ${table.humpClassName}DO getById(Long id); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getAll(); + + /** + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public int update(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getPageList(); + + + /** + * @Description:查询数量 + * @return int + */ + public int getCount(); + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperddd.ftl new file mode 100644 index 0000000..786135a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperddd.ftl @@ -0,0 +1,25 @@ +package ${class.packageName}; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +<#list imports as importClass> +import ${importClass}; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + +<#list methods as method> +${method.doc} + ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxml.ftl new file mode 100644 index 0000000..0938495 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxml.ftl @@ -0,0 +1,62 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxmlddd.ftl new file mode 100644 index 0000000..7d50a9a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mapperxmlddd.ftl @@ -0,0 +1,59 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + +<#list fields as field> +${field.fieldName} + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqconsumer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqconsumer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqhandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqhandler.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqhandler.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqlistener.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqlistener.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqlistener.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqproducer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqproducer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/mqproducer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/msgbody.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/msgbody.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/msgbody.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/parentpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/parentpom.ftl new file mode 100644 index 0000000..b6dda14 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/parentpom.ftl @@ -0,0 +1,227 @@ + + + + 4.0.0 + + ${groupId} + ${artifactId} + pom + ${version} + + ${modulePrefix}-adapter + ${modulePrefix}-domain + ${modulePrefix}-infrast + ${modulePrefix}-app + ${modulePrefix}-client + ${modulePrefix}-start + ${modulePrefix}-feignapi + + + ${artifactId} + + ${url} + + + UTF-8 + 1.8 + 1.8 + 1.8 + 2.1.9.RELEASE + 2.7.3 + 1.2.0.Final + 4.8.0 + + + + + + + + org.springframework.boot + spring-boot-dependencies + ${r'${spring-boot.version}'} + pom + import + + + + + org.apache.dubbo + dubbo-dependencies-bom + ${r'${dubbo.version}'} + pom + import + + + + org.apache.dubbo + dubbo-spring-boot-starter + ${r'${dubbo.version}'} + + + org.apache.dubbo + dubbo + ${r'${dubbo.version}'} + + + org.springframework + spring + + + javax.servlet + servlet-api + + + log4j + log4j + + + + + + com.alibaba.spring + spring-context-support + 1.0.5 + + + + org.mapstruct + mapstruct + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-processor + ${r'${mapstruct.version}'} + + + org.mapstruct + mapstruct-jdk8 + ${r'${mapstruct.version}'} + + + + + commons-collections + commons-collections + 3.2.1 + + + + com.alibaba + fastjson + 1.2.72 + + + + + commons-lang + commons-lang + 2.4 + + + + org.apache.dubbo + dubbo-registry-nacos + 2.7.3 + + + + + org.slf4j + slf4j-api + 1.7.28 + + + org.slf4j + slf4j-ext + 1.7.28 + + + + org.slf4j + slf4j-log4j12 + 1.7.28 + + + + org.springframework.boot + spring-boot-starter-log4j2 + ${r'${spring-boot.version}'} + + + + org.aspectj + aspectjweaver + 1.9.4 + + + + org.aspectj + aspectjrt + 1.8.13 + + + + org.assertj + assertj-core + 3.9.1 + + + + + org.apache.rocketmq + rocketmq-client + ${r'${rocketmq.version}'} + + + + + <#list dependencyList as dependency> + + ${dependency.groupId} + ${dependency.artifactId} + ${dependency.version} + + + + + + + + + + aliyun-releases + 阿里云仓库 + https://maven.aliyun.com/repository/public + + + apache.snapshots.https + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + + false + + + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/service.ftl new file mode 100644 index 0000000..83cea8c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/service.ftl @@ -0,0 +1,62 @@ +package ${package}.service; + +import java.util.List; + +import ${package}.model.bo.${table.humpClassName}BO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * @Description:新增 + * @param bo + * @return ResultDto 返回类型 + * @throws + */ + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) throws Exception; + + /** + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public Boolean delete(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}BO> + * @throws + */ + public ${table.humpClassName}BO getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getAll() throws Exception; + + /** + * @Description:修改 + * @param ${table.humpTableName}BO + * @return boolean + * @throws + */ + public Boolean update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + + + /** + * @Description:分页查询数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getPageList() throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/serviceImpl.ftl new file mode 100644 index 0000000..03c66a6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/serviceImpl.ftl @@ -0,0 +1,58 @@ +package ${packageInfrast}.service.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import ${packageInfrast}.dao.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.model.bo.${table.humpClassName}BO; + +import java.util.List; + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + @Override + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) { + return null; + } + + @Override + public Boolean delete(Long id) { + return false; + } + + @Override + public ${table.humpClassName}BO getById(Long id) { + return null; + } + + @Override + public List<${table.humpClassName}BO> getAll() { + return null; + } + + @Override + public Boolean update(${table.humpClassName}BO bo) { + return false; + } + + + @Override + public List<${table.humpClassName}BO> getPageList() throws Exception { + return null; + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/startpom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/startpom.ftl new file mode 100644 index 0000000..e2be5cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/startpom.ftl @@ -0,0 +1,55 @@ + + + + 4.0.0 + + + ${groupId} + ${artifactId} + ${version} + + + ${groupId} + ${modulePrefix}-start + 1.0-SNAPSHOT + + ${modulePrefix}-start + + http://www.example.com + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.12 + test + + + + org.springframework.boot + spring-boot + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mybatis + mybatis-spring + 2.0.5 + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/test.ftl new file mode 100644 index 0000000..bddd682 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/test.ftl @@ -0,0 +1,107 @@ +package ${package}.service.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${table.tableComment}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${table.humpClassName}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/valueobject.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/valueobject.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/valueobject.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/vo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/vo.ftl new file mode 100644 index 0000000..8113fd2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/vo.ftl @@ -0,0 +1,33 @@ +package ${package}.vo; + +import java.util.Date; +import java.math.BigDecimal; + +/** +* @Description:${table.tableComment}VO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class ${table.humpClassName}VO{ + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +<#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/cola/voddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/cola/voddd.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/cola/voddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/config/app_sql.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/config/app_sql.ftl new file mode 100644 index 0000000..ae984f7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/config/app_sql.ftl @@ -0,0 +1,15 @@ +server.port=8099 + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/infosys_auth?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username= +spring.datasource.password= + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean +spring.application.name=codemaker + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/config/application_properties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/config/application_properties.ftl new file mode 100644 index 0000000..ae984f7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/config/application_properties.ftl @@ -0,0 +1,15 @@ +server.port=8099 + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/infosys_auth?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username= +spring.datasource.password= + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean +spring.application.name=codemaker + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/config/log4j_properties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/config/log4j_properties.ftl new file mode 100644 index 0000000..9602da6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/config/log4j_properties.ftl @@ -0,0 +1,10 @@ +log4j.rootLogger=info, ServerDailyRollingFile, stdout +log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender +log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd +log4j.appender.ServerDailyRollingFile.File=logs/notify-subscription.log +log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout +log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n +log4j.appender.ServerDailyRollingFile.Append=true +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/config/mybatis-config_xml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/config/mybatis-config_xml.ftl new file mode 100644 index 0000000..51d0a7a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/config/mybatis-config_xml.ftl @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/controller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/controller.ftl new file mode 100644 index 0000000..3c88f6d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/controller.ftl @@ -0,0 +1,103 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${table.humpClassName}Controller extends BaseController{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}Controller.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto add(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/AppEventPublisher.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/AppEventPublisher.ftl new file mode 100644 index 0000000..a460444 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/AppEventPublisher.ftl @@ -0,0 +1,18 @@ +package ${package}.utils; + +import ${package}.domain.event.BaseEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class AppEventPublisher { + + @Autowired + private ApplicationContext applicationContext; + + public void publish(T t) { + applicationContext.publishEvent(t); + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/BaseEvent.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/BaseEvent.ftl new file mode 100644 index 0000000..4ff2d93 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/BaseEvent.ftl @@ -0,0 +1,9 @@ +package ${package}.domain.event; + +import org.springframework.context.ApplicationEvent; + +public class BaseEvent extends ApplicationEvent { + public BaseEvent(Object source) { + super(source); + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/SpringApplicationContext.ftl new file mode 100644 index 0000000..53ad3cd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/SpringApplicationContext.ftl @@ -0,0 +1,25 @@ +package ${package}.core.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/application.ftl new file mode 100644 index 0000000..0ad0924 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/application.ftl @@ -0,0 +1,26 @@ +package ${package}; + + +import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan; +import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@DubboComponentScan(basePackages = "${package}") +@EnableDubbo //开启Dubbo的注解支持 +@SpringBootApplication(scanBasePackages = {"${package}"}) +@MapperScan(basePackages = "${package}.common.infrast") +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/applicationproperties.ftl new file mode 100644 index 0000000..e0b6eff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/applicationproperties.ftl @@ -0,0 +1,21 @@ +server.port=8083 +management.port=8073 + +# 跨域 +endpoints.cors.allowed-origins=http://127.0.0.1:8083 +endpoints.cors.allowed-methods=GET,POST + + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/coder_bank_product?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/bo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/bo.ftl new file mode 100644 index 0000000..79fea9d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/bo.ftl @@ -0,0 +1,24 @@ +package ${package}.model.bo; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}BO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}BO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/boddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/boddd.ftl new file mode 100644 index 0000000..1a43aca --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/boddd.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + + /** + * ${field.desc} + */ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/cache.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/cache.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/cache.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/convert.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/convert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/convert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/do.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/do.ftl new file mode 100644 index 0000000..5cb6980 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/do.ftl @@ -0,0 +1,24 @@ +package ${packageInfrast}.dao.dataobject; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}DO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}DO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dto.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dto.ftl new file mode 100644 index 0000000..12465ba --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dto.ftl @@ -0,0 +1,25 @@ +package ${package}.api.dto; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; +import java.io.Serializable; + + +/** +* @Description:${table.tableComment}DTO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}DTO implements Serializable { + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dtoddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dtoddd.ftl new file mode 100644 index 0000000..6a9ddde --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/dtoddd.ftl @@ -0,0 +1,37 @@ +package ${class.packageName}; + +<#list imports as importClass> + import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + +/** +* @Description:${class.classDesc}类 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + +<#list fields as field> + /** ${field.desc} **/ + + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/enum.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/enum.ftl new file mode 100644 index 0000000..27c66dd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/enum.ftl @@ -0,0 +1,47 @@ +package ${class.packageName}; + +import lombok.Getter; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Getter +public enum ${class.className}{ + + /** + * + */ + <#list enums as enumValue> + ${enumValue}, + + ; + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + + ${class.className}(${class.constructParamStr}){ + <#list bodys as body> + ${body}; + + } + + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public static ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/event.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/event.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/event.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/exeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/exeimpl.ftl new file mode 100644 index 0000000..e6a8d75 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/exeimpl.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ${class.packageName}.${class.className}; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facade.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facade.ftl new file mode 100644 index 0000000..a86a9b4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facade.ftl @@ -0,0 +1,66 @@ +package ${package}.api.facade; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.dto.${table.humpClassName}DTO; + +/** + * @Description:${table.tableComment}Facade接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Facade{ + + /** + * @Description:新增 + * @param dto + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}DTO dto) throws Exception; + + /** + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * @Description: 通过id查询 + * @param @param id + * @return ResultDataDto<${table.humpClassName}DTO> + * @throws + */ + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * @Description:修改 + * @param @param ${table.humpTableName}DTO + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}DTO ${table.humpTableName}DTO) throws Exception; + + + + /** + * @Description:分页查询记录 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getPageList(PageDTO pageDto) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeImpl.ftl new file mode 100644 index 0000000..96f9968 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeImpl.ftl @@ -0,0 +1,72 @@ +package ${package}.facade.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.apache.dubbo.config.annotation.Service; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.facade.${table.humpClassName}Facade; +import ${package}.api.dto.${table.humpClassName}DTO; + +import java.util.List; + +/** + * @Description:${table.tableComment}Facade接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}FacadeImpl implements ${table.humpClassName}Facade{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + @Override + public ResultDto save(${table.humpClassName}DTO dto) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + + @Override + public ResultDto delete(Long id) { + ResultDto resultDto = new ResultDto(); + logger.info("${table.humpTableName}Service.delete,id="+id); + //todo impl code + return resultDto; + } + + @Override + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) { + ResultDataDto<${table.humpClassName}DTO> resultDataDto = new ResultDataDto<${table.humpClassName}DTO>(); + logger.info("${table.humpTableName}Service.getById,id="+id); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDataDto> getAll() { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDto update(${table.humpClassName}DTO dto) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + + @Override + public ResultDataDto> getPageList(PageDTO pageDto) { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeaop.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeaop.ftl new file mode 100644 index 0000000..4b8c4f9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeaop.ftl @@ -0,0 +1,37 @@ +package ${package}.aop; + + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.reflection.ExceptionUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** +* +*/ +@Component +@Aspect +@Slf4j +public class FacadeServiceAop { + @Around(value = "execution( public * ${package}.app.facadeimpl..*(..))") + public Object transferException(ProceedingJoinPoint joinPoint) throws Exception { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + try { + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(joinPoint.getArgs())); + Object result = joinPoint.proceed(); + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(result)); + return result; + } catch (Throwable exception) { + throw new Exception(); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeddd.ftl new file mode 100644 index 0000000..2ccce45 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeddd.ftl @@ -0,0 +1,20 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public interface ${class.className}{ +<#list methods as method> + +${method.doc} + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeimplddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeimplddd.ftl new file mode 100644 index 0000000..650653a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/facadeimplddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +<#list imports as importClass> +import ${importClass}; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +${class.annotation} +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + +<#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/factory.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/factory.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/factory.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gataway.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gataway.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gataway.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gatawayimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gatawayimpl.ftl new file mode 100644 index 0000000..6f4af81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/gatawayimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapper.ftl new file mode 100644 index 0000000..a855883 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapper.ftl @@ -0,0 +1,67 @@ +package ${package}.dao.mapper; + +import java.util.List; +import ${package}.dao.dataobject.${table.humpClassName}DO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Mapper{ + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public long insert(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * + * @Description: 通过id删除数据 + * @param id + * @return int + */ + public int deleteById(Long id); + + /** + * + * @Description: 通过id查询 + * @param id + * @return ${table.humpClassName}DO + */ + public ${table.humpClassName}DO getById(Long id); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getAll(); + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public int update(${table.humpClassName}DO ${table.humpTableName}DO); + + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getPageList(); + + /** + * @Description:查询数量 + * @return int + */ + public int getCount(); +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperddd.ftl new file mode 100644 index 0000000..682b735 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperddd.ftl @@ -0,0 +1,24 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + +<#list methods as method> + ${method.doc} + ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxml.ftl new file mode 100644 index 0000000..0a93342 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxml.ftl @@ -0,0 +1,62 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxmlddd.ftl new file mode 100644 index 0000000..7d50a9a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mapperxmlddd.ftl @@ -0,0 +1,59 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + +<#list fields as field> +${field.fieldName} + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqconsumer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqconsumer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqhandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqhandler.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqhandler.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqlistener.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqlistener.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqlistener.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqproducer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqproducer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/mqproducer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/msgbody.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/msgbody.ftl new file mode 100644 index 0000000..e6c85cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/msgbody.ftl @@ -0,0 +1,33 @@ +package ${class.packageName}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/service.ftl new file mode 100644 index 0000000..83cea8c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/service.ftl @@ -0,0 +1,62 @@ +package ${package}.service; + +import java.util.List; + +import ${package}.model.bo.${table.humpClassName}BO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * @Description:新增 + * @param bo + * @return ResultDto 返回类型 + * @throws + */ + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) throws Exception; + + /** + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public Boolean delete(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}BO> + * @throws + */ + public ${table.humpClassName}BO getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getAll() throws Exception; + + /** + * @Description:修改 + * @param ${table.humpTableName}BO + * @return boolean + * @throws + */ + public Boolean update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + + + /** + * @Description:分页查询数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getPageList() throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/serviceImpl.ftl new file mode 100644 index 0000000..66ac9dd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/serviceImpl.ftl @@ -0,0 +1,58 @@ +package ${package}.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +import ${package}.dao.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.model.bo.${table.humpClassName}BO; + +import java.util.List; + + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +@Slf4j +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + + @Resource + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + + @Override + public ${table.humpClassName}BO save(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception{ + return ${table.humpTableName}BO; + } + + @Override + public Boolean delete(Long id) { + return false; + } + + @Override + public ${table.humpClassName}BO getById(Long id) throws Exception { + return null; + } + + @Override + public List<${table.humpClassName}BO> getAll() throws Exception { + return null; + } + + @Override + public Boolean update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception { + return false; + } + + @Override + public List<${table.humpClassName}BO> getPageList() throws Exception { + return null; + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/test.ftl new file mode 100644 index 0000000..09f7837 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/test.ftl @@ -0,0 +1,102 @@ +package ${package}.core.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.api.facade.${table.humpClassName}Facade; +import ${package}.api.dto.${table.humpClassName}DTO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.core.Application; + +import org.apache.dubbo.config.annotation.Reference; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Rollback; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; + +/** +* @Description:单元测试 +* @Author:shenshuai +* @CreateTime:2021-06-25 09:19:38 +* @version v1.0 +*/ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +@Rollback +@Transactional +public class ${table.humpClassName}FacadeTest extends AbstractTransactionalJUnit4SpringContextTests{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}FacadeTest.class); + + @Reference(url = "") + private ${table.humpClassName}Facade ${table.humpTableName}Facade; + + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}DTO dto = new ${table.humpClassName}DTO(); + + + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}DTO vo = new ${table.humpClassName}DTO(); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/valueobject.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/valueobject.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dubbo/valueobject.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/boddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/boddd.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/boddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/dtoddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/dtoddd.ftl new file mode 100644 index 0000000..12465ba --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/dtoddd.ftl @@ -0,0 +1,25 @@ +package ${package}.api.dto; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; +import java.io.Serializable; + + +/** +* @Description:${table.tableComment}DTO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}DTO implements Serializable { + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/enum.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/enum.ftl new file mode 100644 index 0000000..a1b21d0 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/enum.ftl @@ -0,0 +1,47 @@ +package ${class.packageName}; + +import lombok.Getter; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Getter +public enum ${class.className}{ + + /** + * + */ + <#list enums as enumValue> + ${enumValue}, + + ; + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + + ${class.className}(${class.constructParamStr}){ + <#list bodys as body> + ${body}; + + } + + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public static ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/event.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/event.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/event.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/exeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/exeimpl.ftl new file mode 100644 index 0000000..e6a8d75 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/exeimpl.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ${class.packageName}.${class.className}; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/factory.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/factory.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/factory.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gataway.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gataway.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gataway.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gatawayimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gatawayimpl.ftl new file mode 100644 index 0000000..6f4af81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/gatawayimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqconsumer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqconsumer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqhandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqhandler.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqhandler.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqproducer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqproducer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/mqproducer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/msgbody.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/msgbody.ftl new file mode 100644 index 0000000..e6c85cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/msgbody.ftl @@ -0,0 +1,33 @@ +package ${class.packageName}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/service.ftl new file mode 100644 index 0000000..381ab6f --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/service.ftl @@ -0,0 +1,70 @@ +package ${package}; + +import java.util.List; + +import ${package}.core.model.bo.${table.humpClassName}BO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * + * @Title: save + * @Description:新增 + * @author: + * @param @param dto + * @param @param userId + * @return ${table.humpClassName}BO 返回类型 + * @throws + */ + public ${table.humpClassName}BO save(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + + /** + * + * @Title: delete + * @Description: 通过id删除数据 + * @author: + * @param @param id + * @return ResultDto 返回类型 + * @throws + */ + public Boolean delete(Long id); + + /** + * + * @Title: getById + * @Description: 通过id查询 + * @author: + * @param @param id + * @return ${table.humpClassName}BO + * @throws + */ + public ${table.humpClassName}BO getById(Long id) throws Exception; + + /** + * + * @Title: getAll + * @Description:查询所有数据 + * @author: + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getAll() throws Exception; + + /** + * + * @Title: update + * @Description:修改 + * @author: + * @param @param ${table.humpTableName}BO + * @return ${table.humpClassName}BO + * @throws + */ + public ${table.humpClassName}BO update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/valueobject.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/valueobject.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/dynamicddd/valueobject.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/entity.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/entity.ftl new file mode 100644 index 0000000..c45bed2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/entity.ftl @@ -0,0 +1,33 @@ +package ${package}.entity; + +import java.util.Date; +import java.math.BigDecimal; + + /** + * @Description:${table.tableComment}Entity类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public class ${table.humpClassName}Entity{ + + <#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + + <#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/SpringApplicationContext.ftl new file mode 100644 index 0000000..f00b4e9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/SpringApplicationContext.ftl @@ -0,0 +1,40 @@ +/* + * Copyright 2014 Jeanfrancois Arcand + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + package ${package}.context; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/application.ftl new file mode 100644 index 0000000..29299b7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/application.ftl @@ -0,0 +1,47 @@ +package ${package}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.coderman.utils.bean.CglibConvertService; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.web.client.RestTemplate; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@EnableDiscoveryClient +@ComponentScan({"com.lightsnail.**","com.alibaba.nacos","com.coderman.**"}) +public class Application { + + @Bean + public CglibConvertService cglibConvertService(){ + return new CglibConvertService(); + } + + @LoadBalanced + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/applicationproperties.ftl new file mode 100644 index 0000000..e0b6eff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/applicationproperties.ftl @@ -0,0 +1,21 @@ +server.port=8083 +management.port=8073 + +# 跨域 +endpoints.cors.allowed-origins=http://127.0.0.1:8083 +endpoints.cors.allowed-methods=GET,POST + + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/coder_bank_product?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/baseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/baseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/baseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/controller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/controller.ftl new file mode 100644 index 0000000..3fd0d73 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/controller.ftl @@ -0,0 +1,113 @@ +package ${package}.controller; + +import lombok.extern.slf4j.Slf4j; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +@Slf4j +public class ${table.humpClassName}Controller extends BaseController{ + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}Vo + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto save(@RequestBody ${table.humpClassName}VO ${table.humpTableName}Vo){ + try { + return ${table.humpTableName}Service.save(${table.humpTableName}Vo); + } catch (Exception e) { + log.error("保存失败",e); + return ResultDto.setErrorCodeMsg("保存失败"); + } + + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}Vo + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}Vo){ + try { + return ${table.humpTableName}Service.update(${table.humpTableName}Vo); + } catch (Exception e) { + log.error("修改失败",e); + return ResultDto.setErrorCodeMsg("修改失败"); + } + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + return ${table.humpTableName}Service.delete(id); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + try { + return ${table.humpTableName}Service.getById(id); + } catch (Exception e) { + log.error("获取数据失败",e); + return ResultDataDto.setErrorCodeMsg("获取数据失败"); + } + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/entity.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/entity.ftl new file mode 100644 index 0000000..dbaf12b --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/entity.ftl @@ -0,0 +1,24 @@ +package ${package}.entity; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}Entity类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}Entity{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapper.ftl new file mode 100644 index 0000000..4c7d42a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapper.ftl @@ -0,0 +1,69 @@ +package ${package}.mapper; + +import java.util.List; +import ${package}.entity.${table.humpClassName}Entity; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Mapper{ + + /** + * + * @Title: save + * @Description:新增或修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public int insert(${table.humpClassName}Entity ${table.humpTableName}Entity); + + /** + * + * @Title: delete + * @Description: 通过id删除数据 + * @author: + * @param @param id + * @return int + * @throws + */ + public int deleteById(Long id); + + /** + * + * @Title: getById + * @Description: 通过id查询 + * @author: + * @param @param id + * @return ResultDataDto<${table.humpClassName}Entity> 返回类型 + * @throws + */ + public ${table.humpClassName}Entity getById(Long id); + + /** + * + * @Title: getAll + * @Description:查询所有数据 + * @author: + * @return List<${table.humpClassName}Entity 返回类型 + * @throws + */ + public List<${table.humpClassName}Entity> getAll(); + + /** + * + * @Title: update + * @Description:新增或修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public int update(${table.humpClassName}Entity ${table.humpTableName}Entity); + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapperxml.ftl new file mode 100644 index 0000000..df86dd7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/mapperxml.ftl @@ -0,0 +1,49 @@ + + + + + + + + + <#list columns as column> + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/service.ftl new file mode 100644 index 0000000..28aa362 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/service.ftl @@ -0,0 +1,72 @@ +package ${package}.service; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.vo.${table.humpClassName}VO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * + * @Title: save + * @Description:新增 + * @author: + * @param @param dto + * @param @param userId + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}VO ${table.humpTableName}Vo) throws Exception; + + /** + * + * @Title: delete + * @Description: 通过id删除数据 + * @author: + * @param @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * + * @Title: getById + * @Description: 通过id查询 + * @author: + * @param @param id + * @return ResultDataDto<${table.humpClassName}VO> + * @throws + */ + public ResultDataDto<${table.humpClassName}VO> getById(Long id) throws Exception; + + /** + * + * @Title: getAll + * @Description:查询所有数据 + * @author: + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * + * @Title: update + * @Description:修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}VO ${table.humpTableName}Vo) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/serviceImpl.ftl new file mode 100644 index 0000000..77fa4b8 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/serviceImpl.ftl @@ -0,0 +1,77 @@ +package ${package}.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +import com.coderman.utils.bean.CglibConvertService; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.entity.${table.humpClassName}Entity; + +import java.util.List; + + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +@Slf4j +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + + @Resource + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + @Autowired + private CglibConvertService cglibConvertService; + + @Override + public ResultDto save(${table.humpClassName}VO ${table.humpTableName}Vo) throws Exception{ + ResultDto resultDto = new ResultDto(); + ${table.humpClassName}Entity ${table.humpTableName}Entity = cglibConvertService.copyPropertity(${table.humpClassName}Entity.class,${table.humpTableName}Vo); + ${table.humpTableName}Mapper.insert(${table.humpTableName}Entity); + return resultDto; + } + + @Override + public ResultDto delete(Long id) { + ResultDto resultDto = new ResultDto(); + log.info("${table.humpTableName}Service.delete,id="+id); + ${table.humpTableName}Mapper.deleteById(id); + return resultDto; + } + + @Override + public ResultDataDto<${table.humpClassName}VO> getById(Long id) throws Exception { + ResultDataDto<${table.humpClassName}VO> resultDataDto = new ResultDataDto<${table.humpClassName}VO>(); + ${table.humpClassName}Entity ${table.humpTableName}Entity = ${table.humpTableName}Mapper.getById(id); + ${table.humpClassName}VO ${table.humpTableName}Vo = cglibConvertService.copyPropertity(${table.humpClassName}VO.class,${table.humpTableName}Entity); + resultDataDto.setData(${table.humpTableName}Vo); + return resultDataDto; + } + + @Override + public ResultDataDto> getAll() throws Exception { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDto update(${table.humpClassName}VO ${table.humpTableName}Vo) throws Exception { + ResultDto resultDto = new ResultDto(); + ${table.humpClassName}Entity ${table.humpTableName}Entity = cglibConvertService.copyPropertity(${table.humpClassName}Entity.class,${table.humpTableName}Vo); + ${table.humpTableName}Mapper.update(${table.humpTableName}Entity); + return resultDto; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/test.ftl new file mode 100644 index 0000000..bddd682 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/test.ftl @@ -0,0 +1,107 @@ +package ${package}.service.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${table.tableComment}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${table.humpClassName}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/fast/vo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/fast/vo.ftl new file mode 100644 index 0000000..1c415be --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/fast/vo.ftl @@ -0,0 +1,25 @@ +package ${package}.vo; + +import java.util.Date; +import java.math.BigDecimal; + +import lombok.Data; +import lombok.ToString; +/** +* @Description:${table.tableComment}VO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}VO{ + +<#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/mapper.ftl new file mode 100644 index 0000000..8ce3a04 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/mapper.ftl @@ -0,0 +1,69 @@ +package ${package}.mapper; + +import java.util.List; +import ${package}.entity.${table.humpClassName}Entity; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Mapper{ + + /** + * + * @Title: save + * @Description:新增或修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public int insert(${table.humpClassName}Entity ${table.humpTableName}Entity); + + /** + * + * @Title: delete + * @Description: 通过id删除数据 + * @author: + * @param @param id + * @return int + * @throws + */ + public int deleteById(Long id); + + /** + * + * @Title: getById + * @Description: 通过id查询 + * @author: + * @param @param id + * @return ResultDataDto<${table.humpClassName}Entity> 返回类型 + * @throws + */ + public ${table.humpClassName}Entity getById(Long id); + + /** + * + * @Title: getAll + * @Description:查询所有数据 + * @author: + * @return List<${table.humpClassName}Entity 返回类型 + * @throws + */ + public List<${table.humpClassName}Entity> getAll(); + + /** + * + * @Title: update + * @Description:新增或修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public int update(${table.humpClassName}Entity ${table.humpTableName}Entity); + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/mapperxml.ftl new file mode 100644 index 0000000..67b2598 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/mapperxml.ftl @@ -0,0 +1,57 @@ + + + + + + + + + <#list columns as column> + + + + + + + + <#list columns as column> + ${column.columnName}, + + + + + insert into ${table.tableName}( + <#list columns as column> + ${column.columnName}, + + ) + values( + <#list columns as column> + <#noparse>#{${column.columnFieldName}<#noparse>}, + + ) + + + + update ${table.tableName} + set + <#list columns as column> + ${column.columnName}=<#noparse>#{${column.columnFieldName}<#noparse>}, + + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/service.ftl new file mode 100644 index 0000000..9ca5bf6 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/service.ftl @@ -0,0 +1,72 @@ +package ${package}.service; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.vo.${table.humpClassName}VO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * + * @Title: save + * @Description:新增 + * @author: + * @param @param dto + * @param @param userId + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}VO dto) throws Exception; + + /** + * + * @Title: delete + * @Description: 通过id删除数据 + * @author: + * @param @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * + * @Title: getById + * @Description: 通过id查询 + * @author: + * @param @param id + * @return ResultDataDto<${table.humpClassName}VO> + * @throws + */ + public ResultDataDto<${table.humpClassName}VO> getById(Long id) throws Exception; + + /** + * + * @Title: getAll + * @Description:查询所有数据 + * @author: + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * + * @Title: update + * @Description:修改 + * @author: + * @param @param ${table.humpTableName}Entity + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}VO ${table.humpTableName}VO) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/serviceImpl.ftl new file mode 100644 index 0000000..8974666 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/serviceImpl.ftl @@ -0,0 +1,71 @@ +package ${package}.service.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.entity.${table.humpClassName}Entity; + +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import com.alibaba.fastjson.JSONObject; + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + @Override + public ResultDto save(${table.humpClassName}VO vo) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + + @Override + public ResultDto delete(Long id) { + ResultDto resultDto = new ResultDto(); + logger.info("${table.humpTableName}Service.delete,id="+id); + //todo impl code + return resultDto; + } + + @Override + public ResultDataDto<${table.humpClassName}VO> getById(Long id) { + ResultDataDto<${table.humpClassName}VO> resultDataDto = new ResultDataDto<${table.humpClassName}VO>(); + logger.info("${table.humpTableName}Service.getById,id="+id); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDataDto> getAll() { + ResultDataDto> resultDataDto = new ResultDataDto>(); + //todo impl code + return resultDataDto; + } + + @Override + public ResultDto update(${table.humpClassName}VO vo) { + ResultDto resultDto = new ResultDto(); + //todo impl code + return resultDto; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/AppEventPublisher.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/AppEventPublisher.ftl new file mode 100644 index 0000000..b8db74c --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/AppEventPublisher.ftl @@ -0,0 +1,21 @@ +package ${package}.domain.support.utils; + +import ${package}.domain.event.BaseEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class AppEventPublisher { + + @Autowired + private ApplicationContext applicationContext; + + /** + * 发送spring容器事件入口方法 + */ + public void publish(T t) { + applicationContext.publishEvent(t); + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/Application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/Application.ftl new file mode 100644 index 0000000..cfa97ce --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/Application.ftl @@ -0,0 +1,28 @@ +package ${package}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; + + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@SpringBootApplication +@MapperScan(value = "${package}.infrast.dao") +@EnableConfigurationProperties +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseBO.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseBO.ftl new file mode 100644 index 0000000..e43d724 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseBO.ftl @@ -0,0 +1,40 @@ +package ${package}.domain.bo; + +import lombok.ToString; +import lombok.Data; + +import java.io.Serializable; + +/** + * DTO基类 + */ +@ToString +@Data +public class BaseBO implements Serializable { + /** + * 修改时间 + */ + private Date dateUpdate; + + /** + * 创建时间 + */ + private Date dateCreate; + + /** + * 修改人 + */ + private Long updateUserId; + + /** + * 创建人 + */ + private Long createUserId; + + /** + * 请求号 + */ + private String requestNo; + + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseDTO.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseDTO.ftl new file mode 100644 index 0000000..450386a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseDTO.ftl @@ -0,0 +1,13 @@ +package ${package}.api.dto; + +import lombok.ToString; + +import java.io.Serializable; + +/** + * DTO基类 + */ +@ToString +public class BaseDTO implements Serializable { + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseEvent.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseEvent.ftl new file mode 100644 index 0000000..4ff2d93 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/BaseEvent.ftl @@ -0,0 +1,9 @@ +package ${package}.domain.event; + +import org.springframework.context.ApplicationEvent; + +public class BaseEvent extends ApplicationEvent { + public BaseEvent(Object source) { + super(source); + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/FacadeAspect.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/FacadeAspect.ftl new file mode 100644 index 0000000..6811adc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/FacadeAspect.ftl @@ -0,0 +1,37 @@ +package ${package}.app.support; + + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.reflection.ExceptionUtil; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** +* +*/ +@Component +@Aspect +@Slf4j +public class FacadeServiceAop { + @Around(value = "execution( public * ${package}.app.facadeimpl..*(..))") + public Object transferException(ProceedingJoinPoint joinPoint) throws Exception { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + try { + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(joinPoint.getArgs())); + Object result = joinPoint.proceed(); + log.info("=", method.getDeclaringClass().getName(), method.getName(), JSON.toJSONString(result)); + return result; + } catch (Throwable exception) { + throw new Exception(); + } + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/LockA.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/LockA.ftl new file mode 100644 index 0000000..47aedd1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/LockA.ftl @@ -0,0 +1,37 @@ +package ${package}.domain.support.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LockA { + + /** + * 前缀 + */ + String prefixKey() default Constant.TRADE_CENTER_CORE_LOCK_PREFIX; +/** + * 锁 + */ +String key() default "orderId"; + +/** + * 默认 uuid + */ +String requestId() default "requestId"; + + +/** + * 提示消息 + */ +String msg() default "请不要重复提交"; + + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/MqHandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/MqHandler.ftl new file mode 100644 index 0000000..d49dde2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/MqHandler.ftl @@ -0,0 +1,37 @@ +package ${package}.domain.support.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MqHandler { + + /** + * 前缀 + */ + String prefixKey() default Constant.TRADE_CENTER_CORE_LOCK_PREFIX; +/** + * 锁 + */ +String key() default "orderId"; + +/** + * 默认 uuid + */ +String requestId() default "requestId"; + + +/** + * 提示消息 + */ +String msg() default "请不要重复提交"; + + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/PageBO.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/PageBO.ftl new file mode 100644 index 0000000..25a5652 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/PageBO.ftl @@ -0,0 +1,115 @@ +package ${package}.domain.bo; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** +* Description:参考Mybatis_PageHelper的Page对象封装的DTO +* date: 2021/10/26 +* +* @author shenshuai +* @version 1.0.0 +* @since JDK 1.8 +*/ +public class PageBO implements Serializable { + + private static final long serialVersionUID = -2470832822882514457L; + /** + * 页码,从1开始 + */ + private int currentPageNum; + + /** + * 当前页的下一页 + */ + private int nextPageNum; + + /** + * 当前页的上一页 + */ + private int prePageNum; + /** + * 页面大小 + */ + private int pageSize; + /** + * 起始行 + */ + private int startRow; + /** + * 末行 + */ + private int endRow; + /** + * 总数 + */ + private long totalRows; + /** + * 总页数 + */ + private int totalPages; + /** + * 包含count查询 + */ + private boolean count = true; + /** + * 分页合理化 + */ + private Boolean reasonable; + /** + * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 + */ + private Boolean pageSizeZero; + /** + * 进行count查询的列名 + */ + private String countColumn; + /** + * 排序 + */ + private String orderBy; + /** + * 只增加排序 + */ + private boolean orderByOnly; + + private List Items; + + + /** + * 针对简单场景 参数的查询map处理 + */ + private Map queryMap; + + /** + * 针对复杂场景 参数的查询queryDTO对象处理 + */ + private Object queryDTO; + + + public Map getQueryMap() { + return queryMap; + } + + public void setQueryMap(Map queryMap) { + this.queryMap = queryMap; + } + + public Object getQueryDTO() { + return queryDTO; + } + + public void setQueryDTO(Object queryDTO) { + this.queryDTO = queryDTO; + } + + public List getItems() { + return Items; + } + + public PageBO setItems(List items) { + Items = items; + return this; + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/SpringApplicationContext.ftl new file mode 100644 index 0000000..77317f9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/SpringApplicationContext.ftl @@ -0,0 +1,25 @@ +package ${package}.domain.support.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/pom.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/pom.ftl new file mode 100644 index 0000000..6626392 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/singleClass/pom.ftl @@ -0,0 +1,73 @@ + + + + + org.springframework.boot + spring-boot-starter-parent + 2.3.1.RELEASE + + + 4.0.0 + ${makeConf.dsfClientProjectName} + ${makeConf.dsfClientProjectName} + + + UTF-8 + 1.8 + 1.8 + + + + + + com.coderman.utils + coderman-utils + 1.0.0-SNAPSHOT + + + + junit + junit + 4.11 + test + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-configuration-processor + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + UTF8 + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/AppEventPublisher.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/AppEventPublisher.ftl new file mode 100644 index 0000000..a460444 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/AppEventPublisher.ftl @@ -0,0 +1,18 @@ +package ${package}.utils; + +import ${package}.domain.event.BaseEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class AppEventPublisher { + + @Autowired + private ApplicationContext applicationContext; + + public void publish(T t) { + applicationContext.publishEvent(t); + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/BaseEvent.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/BaseEvent.ftl new file mode 100644 index 0000000..4ff2d93 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/BaseEvent.ftl @@ -0,0 +1,9 @@ +package ${package}.domain.event; + +import org.springframework.context.ApplicationEvent; + +public class BaseEvent extends ApplicationEvent { + public BaseEvent(Object source) { + super(source); + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/SpringApplicationContext.ftl new file mode 100644 index 0000000..a6e7b63 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/SpringApplicationContext.ftl @@ -0,0 +1,40 @@ +/* + * Copyright 2014 Jeanfrancois Arcand + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + package ${package}.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/application.ftl new file mode 100644 index 0000000..62e9e70 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/application.ftl @@ -0,0 +1,28 @@ +package ${package}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; + + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@ComponentScan({"${package}.**"}) +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/applicationproperties.ftl new file mode 100644 index 0000000..e0b6eff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/applicationproperties.ftl @@ -0,0 +1,21 @@ +server.port=8083 +management.port=8073 + +# 跨域 +endpoints.cors.allowed-origins=http://127.0.0.1:8083 +endpoints.cors.allowed-methods=GET,POST + + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/coder_bank_product?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/baseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/baseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/baseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/bo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/bo.ftl new file mode 100644 index 0000000..bda8795 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/bo.ftl @@ -0,0 +1,24 @@ +package ${package}.bo; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}BO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}BO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/boddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/boddd.ftl new file mode 100644 index 0000000..1a43aca --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/boddd.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + + /** + * ${field.desc} + */ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/cache.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/cache.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/cache.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controller.ftl new file mode 100644 index 0000000..3c88f6d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controller.ftl @@ -0,0 +1,103 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${table.humpClassName}Controller extends BaseController{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}Controller.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto add(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controllerddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controllerddd.ftl new file mode 100644 index 0000000..570a4e9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/controllerddd.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${class.className} { + + protected Logger logger = LoggerFactory.getLogger(${class.className}.class); + +<#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + +${method.doc} + @RequestMapping(value = "${method.pathValue}") + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/convert.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/convert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/convert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/do.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/do.ftl new file mode 100644 index 0000000..5cb6980 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/do.ftl @@ -0,0 +1,24 @@ +package ${packageInfrast}.dao.dataobject; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}DO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}DO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dto.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dto.ftl new file mode 100644 index 0000000..53b7d4e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dto.ftl @@ -0,0 +1,25 @@ +package ${package}.dto; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; +import java.io.Serializable; + + +/** +* @Description:${table.tableComment}DTO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}DTO implements Serializable { + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dtoddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dtoddd.ftl new file mode 100644 index 0000000..d6243cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/dtoddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + +/** +* @Description:${class.classDesc}类 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + +<#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/entity.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/entity.ftl new file mode 100644 index 0000000..c45bed2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/entity.ftl @@ -0,0 +1,33 @@ +package ${package}.entity; + +import java.util.Date; +import java.math.BigDecimal; + + /** + * @Description:${table.tableComment}Entity类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public class ${table.humpClassName}Entity{ + + <#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + + <#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/enum.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/enum.ftl new file mode 100644 index 0000000..27c66dd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/enum.ftl @@ -0,0 +1,47 @@ +package ${class.packageName}; + +import lombok.Getter; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Getter +public enum ${class.className}{ + + /** + * + */ + <#list enums as enumValue> + ${enumValue}, + + ; + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + + ${class.className}(${class.constructParamStr}){ + <#list bodys as body> + ${body}; + + } + + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public static ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/event.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/event.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/event.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/exeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/exeimpl.ftl new file mode 100644 index 0000000..e6a8d75 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/exeimpl.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ${class.packageName}.${class.className}; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/factory.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/factory.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/factory.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gataway.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gataway.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gataway.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gatawayimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gatawayimpl.ftl new file mode 100644 index 0000000..6f4af81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/gatawayimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapper.ftl new file mode 100644 index 0000000..db78b21 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapper.ftl @@ -0,0 +1,68 @@ +package ${package}.dao.mapper; + +import java.util.List; +import ${package}.dao.dataobject.${table.humpClassName}DO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Mapper +public interface ${table.humpClassName}Mapper{ + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public long insert(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description: 通过id删除数据 + * @param id + * @return int + */ + public int deleteById(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}DO> + */ + public ${table.humpClassName}DO getById(Long id); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getAll(); + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public int update(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getPageList(); + + + /** + * @Description:查询数量 + * @return int + */ + public int getCount(); + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperddd.ftl new file mode 100644 index 0000000..43102bc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperddd.ftl @@ -0,0 +1,26 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + +<#list methods as method> + ${method.doc} + ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxml.ftl new file mode 100644 index 0000000..3e3c284 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxml.ftl @@ -0,0 +1,62 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxmlddd.ftl new file mode 100644 index 0000000..7d50a9a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mapperxmlddd.ftl @@ -0,0 +1,59 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + +<#list fields as field> +${field.fieldName} + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqconsumer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqconsumer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqhandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqhandler.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqhandler.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqlistener.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqlistener.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqlistener.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqproducer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqproducer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/mqproducer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/msgbody.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/msgbody.ftl new file mode 100644 index 0000000..e6c85cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/msgbody.ftl @@ -0,0 +1,33 @@ +package ${class.packageName}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/service.ftl new file mode 100644 index 0000000..13903d7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/service.ftl @@ -0,0 +1,69 @@ +package ${package}.service; + +import java.util.List; + +import ${package}.bo.${table.humpClassName}BO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * @Description:新增 + * @param bo + * @return ResultDto 返回类型 + * @throws + */ + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) throws Exception; + + /** + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public Boolean delete(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}BO> + * @throws + */ + public ${table.humpClassName}BO getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getAll() throws Exception; + + /** + * @Description:修改 + * @param ${table.humpTableName}BO + * @return boolean + * @throws + */ + public Boolean update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + + + /** + * @Description:分页查询数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getPageList() throws Exception; + + /** + * @Description:查询数量 + * @return int + */ + public int getCount() throws Exception; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/serviceImpl.ftl new file mode 100644 index 0000000..496601e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/serviceImpl.ftl @@ -0,0 +1,77 @@ +package ${package}.service.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.dao.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.bo.${table.humpClassName}BO; + +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import com.alibaba.fastjson.JSONObject; + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + @Override + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) { + //todo impl code + return null; + } + + @Override + public Boolean delete(Long id) { + logger.info("${table.humpTableName}Service.delete,id="+id); + //todo impl code + return false; + } + + @Override + public ${table.humpClassName}BO getById(Long id) { + logger.info("${table.humpTableName}Service.getById,id="+id); + //todo impl code + return null; + } + + @Override + public List<${table.humpClassName}BO> getAll() { + //todo impl code + return null; + } + + @Override + public Boolean update(${table.humpClassName}BO bo) { + //todo impl code + return false; + } + + + @Override + public List<${table.humpClassName}BO> getPageList() throws Exception { + return null; + } + + + @Override + public int getCount() throws Exception { + return 0; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/test.ftl new file mode 100644 index 0000000..bddd682 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/test.ftl @@ -0,0 +1,107 @@ +package ${package}.service.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${table.tableComment}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${table.humpClassName}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/valueobject.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/valueobject.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/valueobject.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/vo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/vo.ftl new file mode 100644 index 0000000..8113fd2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/vo.ftl @@ -0,0 +1,33 @@ +package ${package}.vo; + +import java.util.Date; +import java.math.BigDecimal; + +/** +* @Description:${table.tableComment}VO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class ${table.humpClassName}VO{ + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +<#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springboot/voddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/voddd.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springboot/voddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/AppEventPublisher.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/AppEventPublisher.ftl new file mode 100644 index 0000000..a460444 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/AppEventPublisher.ftl @@ -0,0 +1,18 @@ +package ${package}.utils; + +import ${package}.domain.event.BaseEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class AppEventPublisher { + + @Autowired + private ApplicationContext applicationContext; + + public void publish(T t) { + applicationContext.publishEvent(t); + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/BaseEvent.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/BaseEvent.ftl new file mode 100644 index 0000000..4ff2d93 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/BaseEvent.ftl @@ -0,0 +1,9 @@ +package ${package}.domain.event; + +import org.springframework.context.ApplicationEvent; + +public class BaseEvent extends ApplicationEvent { + public BaseEvent(Object source) { + super(source); + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/SpringApplicationContext.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/SpringApplicationContext.ftl new file mode 100644 index 0000000..a6e7b63 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/SpringApplicationContext.ftl @@ -0,0 +1,40 @@ +/* + * Copyright 2014 Jeanfrancois Arcand + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + package ${package}.utils; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringApplicationContext implements BeanFactoryAware { + + private static BeanFactory springBeanFactory; + + @Override + public synchronized void setBeanFactory(BeanFactory beanFactory) throws BeansException { + springBeanFactory = beanFactory; + } + + public synchronized static T getBean(Class klass) { + return springBeanFactory.getBean(klass); + } + + public synchronized static Object getBean(String beanName) { + return springBeanFactory.getBean(beanName); + } +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/application.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/application.ftl new file mode 100644 index 0000000..62e9e70 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/application.ftl @@ -0,0 +1,28 @@ +package ${package}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; + + +/** +* @Description:应用启动入口 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@ComponentScan({"${package}.**"}) +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/applicationproperties.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/applicationproperties.ftl new file mode 100644 index 0000000..e0b6eff --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/applicationproperties.ftl @@ -0,0 +1,21 @@ +server.port=8083 +management.port=8073 + +# 跨域 +endpoints.cors.allowed-origins=http://127.0.0.1:8083 +endpoints.cors.allowed-methods=GET,POST + + +#数据库配置 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/coder_bank_product?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC +spring.datasource.username=root +spring.datasource.password=root + +#配置.xml文件路径 +mybatis.config-locations=classpath:mybatis-config.xml +mybatis.mapper-locations=classpath:mapper/*.xml +#配置模型路径 +mybatis.type-aliases-package=com.tianhua.codemaker.bean + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/baseController.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/baseController.ftl new file mode 100644 index 0000000..9aeaf34 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/baseController.ftl @@ -0,0 +1,45 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** +* @Description:控制层基础父类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class BaseController{ + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * 从request中获取指定的字符串 + * @param parameterName + * @return + */ + protected String getParameterString(String parameterName) { + //return RequestUtil.getParameterString(parameterName); + return ""; + } + + /** + * 从request中获取指定的整型 + * @param parameterName + * @return + */ + protected Integer getParameterInteger(String parameterName) { + // return RequestUtil.getParameterInteger(parameterName); + return 0; + } + + /** + * 从request中获取指定的长整型 + * @param parameterName + * @return + */ + protected Long getParameterLong(String parameterName) { + //return RequestUtil.getParameterLong(parameterName); + return 0L; + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/bo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/bo.ftl new file mode 100644 index 0000000..bda8795 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/bo.ftl @@ -0,0 +1,24 @@ +package ${package}.bo; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}BO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}BO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/boddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/boddd.ftl new file mode 100644 index 0000000..1a43aca --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/boddd.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + + /** + * ${field.desc} + */ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/cache.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/cache.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/cache.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controller.ftl new file mode 100644 index 0000000..3c88f6d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controller.ftl @@ -0,0 +1,103 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${table.humpClassName}Controller extends BaseController{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}Controller.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto add(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controllerddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controllerddd.ftl new file mode 100644 index 0000000..746c312 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/controllerddd.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.beans.factory.annotation.Autowired; + + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${class.className} ${class.relationClassStr}{ + + protected Logger logger = LoggerFactory.getLogger(${class.className}.class); + +<#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + +${method.doc} + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/convert.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/convert.ftl new file mode 100644 index 0000000..6fe60c1 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/convert.ftl @@ -0,0 +1,30 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + ${class.className} INSTANCE = Mappers.getMapper(${class.className}.class); + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/do.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/do.ftl new file mode 100644 index 0000000..5cb6980 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/do.ftl @@ -0,0 +1,24 @@ +package ${packageInfrast}.dao.dataobject; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${table.tableComment}DO类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${table.humpClassName}DO{ + + <#list columns as column> + + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dto.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dto.ftl new file mode 100644 index 0000000..53b7d4e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dto.ftl @@ -0,0 +1,25 @@ +package ${package}.dto; + +import java.util.Date; +import java.math.BigDecimal; +import lombok.Data; +import lombok.ToString; +import java.io.Serializable; + + +/** +* @Description:${table.tableComment}DTO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${table.humpClassName}DTO implements Serializable { + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dtoddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dtoddd.ftl new file mode 100644 index 0000000..d6243cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/dtoddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + +/** +* @Description:${class.classDesc}类 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + +<#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/entity.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/entity.ftl new file mode 100644 index 0000000..c45bed2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/entity.ftl @@ -0,0 +1,33 @@ +package ${package}.entity; + +import java.util.Date; +import java.math.BigDecimal; + + /** + * @Description:${table.tableComment}Entity类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public class ${table.humpClassName}Entity{ + + <#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + + <#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/enum.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/enum.ftl new file mode 100644 index 0000000..27c66dd --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/enum.ftl @@ -0,0 +1,47 @@ +package ${class.packageName}; + +import lombok.Getter; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Getter +public enum ${class.className}{ + + /** + * + */ + <#list enums as enumValue> + ${enumValue}, + + ; + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + + ${class.className}(${class.constructParamStr}){ + <#list bodys as body> + ${body}; + + } + + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + public static ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/event.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/event.ftl new file mode 100644 index 0000000..9f15e12 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/event.ftl @@ -0,0 +1,35 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/exeimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/exeimpl.ftl new file mode 100644 index 0000000..e6a8d75 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/exeimpl.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import ${class.packageName}.${class.className}; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/factory.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/factory.ftl new file mode 100644 index 0000000..d7514ab --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/factory.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + +${method.doc} + ${method.visibility} ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feign.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feign.ftl new file mode 100644 index 0000000..25af93e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feign.ftl @@ -0,0 +1,68 @@ +package ${package}.api.facade; + +import java.util.List; +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; +import com.coderman.utils.response.PageDTO; + +import ${package}.api.dto.${table.humpClassName}DTO; + +/** + * @Description:${table.tableComment}Facade接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Facade{ + + /** + * @Description:新增${table.tableComment} + * @author: + * @param dto + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto save(${table.humpClassName}DTO dto) throws Exception; + + /** + * + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public ResultDto delete(Long id); + + /** + * + * @Description: 通过id查询 + * @param @param id + * @return ResultDataDto<${table.humpClassName}DTO> + * @throws + */ + public ResultDataDto<${table.humpClassName}DTO> getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getAll() throws Exception; + + /** + * @Description:修改 + * @param @param ${table.humpTableName}DTO + * @return int + * @throws + */ + public ResultDto update(${table.humpClassName}DTO ${table.humpTableName}DTO) throws Exception; + + + /** + * @Description:分页查询记录 + * @return ResultDataDto> + * @throws + */ + public ResultDataDto> getPageList(PageDTO pageDto) throws Exception; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontroller.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontroller.ftl new file mode 100644 index 0000000..b8a174a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontroller.ftl @@ -0,0 +1,103 @@ +package ${package}.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.dto.${table.humpClassName}DTO; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${table.humpClassName}Controller extends BaseController{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}Controller.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + + + /** + * @Description:新增${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/add",method = RequestMethod.POST) + public ResultDto add(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:修改${table.tableComment} + * @version v1.0 + * @param ${table.humpTableName}VO + * @return ResultDto + */ + @RequestMapping(value = "/${table.humpTableName}/update",method = RequestMethod.POST) + public ResultDto update(@RequestBody ${table.humpClassName}VO ${table.humpTableName}VO){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据id删除${table.tableComment} + * @version v1.0 + * @param id + * @return ResultDto + */ + @PostMapping("/${table.humpTableName}/delete") + public ResultDto delete(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDto(); + } + + /** + * @Description:根据ID获取${table.tableComment}单条记录 + * @version v1.0 + * @param id + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/get") + public ResultDataDto getById(@RequestParam(name = "id") Long id){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:分页获取${table.tableComment}记录 + * @version v1.0 + * @return ResultDataDto + */ + @GetMapping("/${table.humpTableName}/getpage") + public ResultDataDto getPage(){ + //todo impl code + return new ResultDataDto(); + } + + /** + * @Description:修改${table.tableComment}状态 + * @version v1.0 + * @param id + * @param status + * @return ResultDataDto + */ + @PostMapping("/${table.humpTableName}/changestatus") + public ResultDto changeStatus(@RequestParam(name = "id") Long id,@RequestParam(name = "status") int status){ + //todo impl code + return new ResultDto(); + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontrollerddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontrollerddd.ftl new file mode 100644 index 0000000..974cd45 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feigncontrollerddd.ftl @@ -0,0 +1,38 @@ +package ${class.packageName}; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +<#list imports as importClass> +import ${importClass}; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* @Description:${table.tableComment}控制层 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RestController +public class ${class.className} ${class.relationClassStr}{ + + protected Logger logger = LoggerFactory.getLogger(${class.className}.class); + +<#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + +<#list methods as method> + +${method.doc} + @RequestMapping(value = "${method.pathValue}") + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feignddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feignddd.ftl new file mode 100644 index 0000000..9607631 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/feignddd.ftl @@ -0,0 +1,22 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +${class.annotation} +public interface ${class.className}{ +<#list methods as method> + +${method.doc} + @RequestMapping(value = "${method.pathValue}") + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gataway.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gataway.ftl new file mode 100644 index 0000000..f2689c4 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gataway.ftl @@ -0,0 +1,23 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + + +/** + * @Description:${class.classDesc}接口 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${class.className}{ + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.returnClass} ${method.methodName}; + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gatawayimpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gatawayimpl.ftl new file mode 100644 index 0000000..6f4af81 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/gatawayimpl.ftl @@ -0,0 +1,39 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * @Description:${class.classDesc}接口实现类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className} ${class.relationClassStr}{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + + <#list fields as field> + @Autowired + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + + @Override + public ${method.returnClass} ${method.methodName}{ +${method.methodContent} + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapper.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapper.ftl new file mode 100644 index 0000000..db78b21 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapper.ftl @@ -0,0 +1,68 @@ +package ${package}.dao.mapper; + +import java.util.List; +import ${package}.dao.dataobject.${table.humpClassName}DO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * @Description:${table.tableComment}mapperDAO接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Mapper +public interface ${table.humpClassName}Mapper{ + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public long insert(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description: 通过id删除数据 + * @param id + * @return int + */ + public int deleteById(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}DO> + */ + public ${table.humpClassName}DO getById(Long id); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getAll(); + + /** + * + * @Description:新增或修改 + * @param ${table.humpTableName}DO + * @return int + */ + public int update(${table.humpClassName}DO ${table.humpTableName}DO); + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}DO + */ + public List<${table.humpClassName}DO> getPageList(); + + + /** + * @Description:查询数量 + * @return int + */ + public int getCount(); + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperddd.ftl new file mode 100644 index 0000000..43102bc --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperddd.ftl @@ -0,0 +1,26 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + + +/** +* @Description:${class.classDesc}接口 +* @Author:${class.author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@Mapper +public interface ${class.className}{ + +<#list methods as method> + ${method.doc} + ${method.returnClass} ${method.methodName}; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxml.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxml.ftl new file mode 100644 index 0000000..3e3c284 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxml.ftl @@ -0,0 +1,62 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxmlddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxmlddd.ftl new file mode 100644 index 0000000..7d50a9a --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mapperxmlddd.ftl @@ -0,0 +1,59 @@ + + + + + + + + + <#list columns as column> + + + + + + + + + + + + + ${table.columnNameList} + + + + insert into ${table.tableName}( + ${table.insertColumnNames} + ) + values( + ${table.insertColumnNameList} + ) + + + + update ${table.tableName} + set + ${table.updateColumnNameList} + where id = <#noparse>#{id<#noparse>} + + + + + + + + delete from ${table.tableName} where id = <#noparse>#{id<#noparse>} + + +<#list fields as field> +${field.fieldName} + + + + + diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqconsumer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqconsumer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqconsumer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqhandler.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqhandler.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqhandler.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqlistener.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqlistener.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqlistener.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqproducer.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqproducer.ftl new file mode 100644 index 0000000..758b640 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/mqproducer.ftl @@ -0,0 +1,34 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import org.springframework.stereotype.Service; + + /** + * @Description:${class.className}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/msgbody.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/msgbody.ftl new file mode 100644 index 0000000..e6c85cb --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/msgbody.ftl @@ -0,0 +1,33 @@ +package ${class.packageName}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/service.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/service.ftl new file mode 100644 index 0000000..13903d7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/service.ftl @@ -0,0 +1,69 @@ +package ${package}.service; + +import java.util.List; + +import ${package}.bo.${table.humpClassName}BO; + +/** + * @Description:${table.tableComment}Service接口 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +public interface ${table.humpClassName}Service{ + + /** + * @Description:新增 + * @param bo + * @return ResultDto 返回类型 + * @throws + */ + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) throws Exception; + + /** + * @Description: 通过id删除数据 + * @param id + * @return ResultDto 返回类型 + * @throws + */ + public Boolean delete(Long id); + + /** + * @Description: 通过id查询 + * @param id + * @return ResultDataDto<${table.humpClassName}BO> + * @throws + */ + public ${table.humpClassName}BO getById(Long id) throws Exception; + + /** + * @Description:查询所有数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getAll() throws Exception; + + /** + * @Description:修改 + * @param ${table.humpTableName}BO + * @return boolean + * @throws + */ + public Boolean update(${table.humpClassName}BO ${table.humpTableName}BO) throws Exception; + + + /** + * @Description:分页查询数据 + * @return List<${table.humpClassName}BO> + * @throws + */ + public List<${table.humpClassName}BO> getPageList() throws Exception; + + /** + * @Description:查询数量 + * @return int + */ + public int getCount() throws Exception; + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/serviceImpl.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/serviceImpl.ftl new file mode 100644 index 0000000..496601e --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/serviceImpl.ftl @@ -0,0 +1,77 @@ +package ${package}.service.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import ${package}.dao.mapper.${table.humpClassName}Mapper; +import ${package}.service.${table.humpClassName}Service; +import ${package}.bo.${table.humpClassName}BO; + +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import com.alibaba.fastjson.JSONObject; + +/** + * @Description:${table.tableComment}Service接口实现类 + * @Author:${author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Service +public class ${table.humpClassName}ServiceImpl implements ${table.humpClassName}Service{ + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ${table.humpClassName}Mapper ${table.humpTableName}Mapper; + + @Override + public ${table.humpClassName}BO save(${table.humpClassName}BO bo) { + //todo impl code + return null; + } + + @Override + public Boolean delete(Long id) { + logger.info("${table.humpTableName}Service.delete,id="+id); + //todo impl code + return false; + } + + @Override + public ${table.humpClassName}BO getById(Long id) { + logger.info("${table.humpTableName}Service.getById,id="+id); + //todo impl code + return null; + } + + @Override + public List<${table.humpClassName}BO> getAll() { + //todo impl code + return null; + } + + @Override + public Boolean update(${table.humpClassName}BO bo) { + //todo impl code + return false; + } + + + @Override + public List<${table.humpClassName}BO> getPageList() throws Exception { + return null; + } + + + @Override + public int getCount() throws Exception { + return 0; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/test.ftl new file mode 100644 index 0000000..bddd682 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/test.ftl @@ -0,0 +1,107 @@ +package ${package}.service.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${table.tableComment}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${table.humpClassName}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/valueobject.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/valueobject.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/valueobject.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/vo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/vo.ftl new file mode 100644 index 0000000..8113fd2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/vo.ftl @@ -0,0 +1,33 @@ +package ${package}.vo; + +import java.util.Date; +import java.math.BigDecimal; + +/** +* @Description:${table.tableComment}VO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class ${table.humpClassName}VO{ + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +<#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/voddd.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/voddd.ftl new file mode 100644 index 0000000..5c2f634 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/springcloud/voddd.ftl @@ -0,0 +1,36 @@ +package ${class.packageName}; + +<#list imports as importClass> +import ${importClass}; + + +import lombok.Data; +import lombok.ToString; + + /** + * @Description:${class.classDesc}类 + * @Author:${class.author} + * @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} + * @version v1.0 + */ +@Data +@ToString +public class ${class.className} ${class.relationClassStr}{ + + <#list fields as field> + /** ${field.desc} **/ + ${field.visibility} ${field.fieldName}; + + + <#list methods as method> + /** + * + * @Description:${method.desc} + * @return ${method.returnClass} + */ + ${method.visibility} ${method.returnClass} ${method.methodName}{ + ${method.returnBody} + } + + +} \ No newline at end of file diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/test.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/test.ftl new file mode 100644 index 0000000..bddd682 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/test.ftl @@ -0,0 +1,107 @@ +package ${package}.service.test; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ${package}.service.${table.humpClassName}Service; +import ${package}.vo.${table.humpClassName}VO; +import ${package}.Application; + +import com.coderman.utils.response.ResultDataDto; +import com.coderman.utils.response.ResultDto; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.alibaba.fastjson.JSON; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** +* @Description:${table.tableComment}单元测试 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT,classes = {Application.class}) +public class ${table.humpClassName}ServiceTest{ + + protected Logger logger = LoggerFactory.getLogger(${table.humpClassName}ServiceTest.class); + + @Autowired + private ${table.humpClassName}Service ${table.humpTableName}Service; + @Autowired + private TestRestTemplate restTemplate; + + /** + * @Description:测试新增${table.tableComment} 接口 + */ + @Test + public void testAdd(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/add",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试修改${table.tableComment} + */ + @Test + public void testUpdate(){ + //todo test code + ${table.humpClassName}VO vo = new ${table.humpClassName}VO(); + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/update",vo, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:测试删除根据id删除${table.tableComment} + */ + @Test + public void testDelete(){ + //todo test code + long id = 1L; + ResultDto resultDto = restTemplate.postForEntity("/${table.humpTableName}/delete",id, ResultDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDto)); + } + + /** + * @Description:但是根据ID获取${table.tableComment}单条记录 + */ + @Test + public void testGetById(){ + //todo test code + ResultDataDto resultDataDto = restTemplate.getForEntity("/${table.humpTableName}/get?id=1",ResultDataDto.class).getBody(); + System.out.println(JSON.toJSONString(resultDataDto)); + } + + /** + * @Description:测试分页获取${table.tableComment}记录 + */ + @Test + public void getPage(){ + //todo test code + } + + /** + * @Description:测试禁用${table.tableComment}状态 + */ + @Test + public void testDisable(){ + //todo test code + } + /** + * @Description:测试启用${table.tableComment}状态 + */ + @Test + public void testEnable(){ + //todo test code + } +} diff --git a/codemaker-parent/codemaker-core/src/test/resources/template/vo.ftl b/codemaker-parent/codemaker-core/src/test/resources/template/vo.ftl new file mode 100644 index 0000000..8113fd2 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/resources/template/vo.ftl @@ -0,0 +1,33 @@ +package ${package}.vo; + +import java.util.Date; +import java.math.BigDecimal; + +/** +* @Description:${table.tableComment}VO类 +* @Author:${author} +* @CreateTime:${.now?string('yyyy-MM-dd HH:mm:ss')} +* @version v1.0 +*/ +public class ${table.humpClassName}VO{ + +<#list columns as column> + /** ${column.columnComment} **/ + private ${column.columnTypeName} ${column.columnFieldName}; + + +<#list columns as column> + /** + * 描述:${column.columnComment} + */ + public ${column.columnTypeName} get${column.columnUperName}() { + return ${column.columnFieldName}; + } + /** + * 描述:${column.columnComment} + */ + public void set${column.columnUperName}(${column.columnTypeName} ${column.columnFieldName}) { + this.${column.columnFieldName} = ${column.columnFieldName}; + } + +} \ No newline at end of file -- Gitee From 9b2e389d9e2e71b21f51b03dfaf344b7797fbfc7 Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:21:55 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dbergenerate/bean/ErPictureBean.java | 2 +- .../dbergenerate/bean/TableBean.java | 2 +- .../service/ErPictureService.java | 2 +- .../service/ErPictureServiceHelper.java | 2 +- .../service/ErPictureServiceImpl.java | 2 +- .../service/ErPictureWriteService.java | 2 +- .../infosys/authtest/SystemFacadeTest.java | 2 +- .../usercrm/app/command/AbstractCmd.java | 28 - .../usercrm/app/command/AddUserAuthCmd.java | 25 - .../usercrm/app/command/AddUserCmd.java | 25 - .../usercrm/app/command/AddUserGroupCmd.java | 23 - .../app/command/UpdateUserAuthCmd.java | 25 - .../usercrm/app/exe/CmdExeService.java | 19 - .../usercrm/app/exe/UserAuthCmdExe.java | 26 - .../snailapp/usercrm/app/exe/UserCmdExe.java | 26 - .../usercrm/app/exe/UserGroupCmdExe.java | 26 - .../usercrm/domain/bo/AdminAuthorityBO.java | 25 - .../usercrm/domain/bo/AuthorityBO.java | 21 - .../usercrm/domain/bo/DataAuthorityBO.java | 25 - .../snailapp/usercrm/domain/bo/RoleBO.java | 21 - .../usercrm/domain/bo/SystemAuthorityBO.java | 27 - .../usercrm/domain/bo/SystemConfig.java | 25 - .../snailapp/usercrm/domain/bo/UserBO.java | 21 - .../usercrm/domain/bo/UserGroupBO.java | 21 - .../src/test/java/org/example/AppTest.java | 20 - .../src/test/java/ClassUtils.java | 307 ----- .../codemaker-core/src/test/java/DAOTest.java | 1042 ----------------- .../test/java/ProjectTemplateConfigTest.java | 30 - .../codemaker-core/src/test/java/Test.java | 13 - .../src/test/java/TestTableName.java | 35 - .../service/expertest}/ClassLoaderTest.java | 4 +- .../service/expertest}/ClassLoaderTest2.java | 6 +- .../service/expertest}/RbcClassLoader.java | 4 +- .../codemaker/service/expertest}/Test2.java | 9 +- .../codemaker/service/expertest}/Test3.java | 13 +- .../test/AnnotationParseServiceTest.java | 44 + .../codemaker/service/test/BaseTest.java | 19 + .../service/test/ReadPlantUMLServiceTest.java | 47 + .../service/test/VarRegistryServiceTest.java | 36 + 39 files changed, 171 insertions(+), 1881 deletions(-) delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AbstractCmd.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserAuthCmd.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserCmd.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserGroupCmd.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/UpdateUserAuthCmd.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/CmdExeService.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserAuthCmdExe.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserCmdExe.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserGroupCmdExe.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AdminAuthorityBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AuthorityBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/DataAuthorityBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/RoleBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemAuthorityBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemConfig.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserBO.java delete mode 100644 codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserGroupBO.java delete mode 100644 codemaker-dynamicddd/src/test/java/org/example/AppTest.java delete mode 100644 codemaker-parent/codemaker-core/src/test/java/ClassUtils.java delete mode 100644 codemaker-parent/codemaker-core/src/test/java/DAOTest.java delete mode 100644 codemaker-parent/codemaker-core/src/test/java/ProjectTemplateConfigTest.java delete mode 100644 codemaker-parent/codemaker-core/src/test/java/Test.java delete mode 100644 codemaker-parent/codemaker-core/src/test/java/TestTableName.java rename codemaker-parent/codemaker-core/src/test/java/{ => com/tianhua/codemaker/service/expertest}/ClassLoaderTest.java (96%) rename codemaker-parent/codemaker-core/src/test/java/{ => com/tianhua/codemaker/service/expertest}/ClassLoaderTest2.java (92%) rename codemaker-parent/codemaker-core/src/test/java/{ => com/tianhua/codemaker/service/expertest}/RbcClassLoader.java (96%) rename codemaker-parent/codemaker-core/src/test/java/{ => com/tianhua/codemaker/service/expertest}/Test2.java (94%) rename codemaker-parent/codemaker-core/src/test/java/{ => com/tianhua/codemaker/service/expertest}/Test3.java (66%) create mode 100644 codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/AnnotationParseServiceTest.java create mode 100644 codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/BaseTest.java create mode 100644 codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/ReadPlantUMLServiceTest.java create mode 100644 codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/VarRegistryServiceTest.java diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/ErPictureBean.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/ErPictureBean.java index 91ef505..0f29c1e 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/ErPictureBean.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/ErPictureBean.java @@ -6,7 +6,7 @@ import java.util.Map; * Description:e-r图示例 * date: 2020/10/20 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/TableBean.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/TableBean.java index f2fc2bc..8e17b94 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/TableBean.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/bean/TableBean.java @@ -5,7 +5,7 @@ import java.util.List; /** * Created on 2018-7-19. * - * @author: fanchunshuai + * @author: shenshuai * @version: V1.0 * @Desc:表信息描述 */ diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureService.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureService.java index 91b6a06..13a5ff9 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureService.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureService.java @@ -9,7 +9,7 @@ import java.util.List; * Description: 生成e-r图的服务接口 * date: 2020/10/20 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceHelper.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceHelper.java index 04a5f8e..67e8d7c 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceHelper.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceHelper.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; * Description: 辅助类 * date: 2020/10/20 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceImpl.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceImpl.java index cf3c9b2..a503c85 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceImpl.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureServiceImpl.java @@ -11,7 +11,7 @@ import java.util.Map; * Description: * date: 2020/10/20 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureWriteService.java b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureWriteService.java index 3a9eea6..dc4910e 100644 --- a/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureWriteService.java +++ b/codemaker-dberPicture/src/main/java/com/coderman/codemaker/dbergenerate/service/ErPictureWriteService.java @@ -11,7 +11,7 @@ import java.util.Map; * Description: * date: 2020/10/20 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemFacadeTest.java index 80cba05..b1245df 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AbstractCmd.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AbstractCmd.java deleted file mode 100644 index 4c6f6c2..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AbstractCmd.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.command; - -import java.util.Date; - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:抽象命令类类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class AbstractCmd { - - /** +操作时间 **/ - public Date operateTime; - /** +操作人ID **/ - public Long userId; - /** +命令类 **/ - public Class commandClass; - /** +命令数据 **/ - public String payLoad;; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserAuthCmd.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserAuthCmd.java deleted file mode 100644 index 171da4f..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserAuthCmd.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.command; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:增加用户权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class AddUserAuthCmd extends AbstractCmd{ - - /** 用户ID **/ - private Long userId; - /** 权限类型 **/ - private int authorityType; - /** 权限数据内容 **/ - private String json; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserCmd.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserCmd.java deleted file mode 100644 index 0597d0c..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserCmd.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.command; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:增加用户命令类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class AddUserCmd extends AbstractCmd{ - - /** 用户名 **/ - private String userName; - /** 用户ID **/ - private Long userId; - /** 所属组织 **/ - private Long departmentId; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserGroupCmd.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserGroupCmd.java deleted file mode 100644 index 8ba24ed..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/AddUserGroupCmd.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.command; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:增加用户组命令类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class AddUserGroupCmd extends AbstractCmd{ - - /** 组名 **/ - private String groupName; - /** 用户ID **/ - private Long userId; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/UpdateUserAuthCmd.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/UpdateUserAuthCmd.java deleted file mode 100644 index c83c015..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/command/UpdateUserAuthCmd.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.command; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:更新用户权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Data -@ToString -public class UpdateUserAuthCmd extends AbstractCmd{ - - /** 用户ID **/ - private Long userId; - /** 角色ID **/ - private Long roleId; - /** 权限数据内容 **/ - private String json; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/CmdExeService.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/CmdExeService.java deleted file mode 100644 index a48783e..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/CmdExeService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.exe; - -import com.lightsnail.snailapp.usercrm.app.command.AbstractCmd; - - -/** - * @Description:命令执行接口接口 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -public interface CmdExeService{ - /** - * - * @Description:命令执行入口 - * @return String - */ - String exe(AbstractCmd abstractCmd); -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserAuthCmdExe.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserAuthCmdExe.java deleted file mode 100644 index 2defff6..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserAuthCmdExe.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.exe; - -import com.lightsnail.snailapp.usercrm.app.command.AbstractCmd; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import com.lightsnail.snailapp.usercrm.app.exe.UserAuthCmdExe; - -/** - * @Description:用户权限cmd处理类接口实现类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Service -public class UserAuthCmdExe implements CmdExeService{ - - private Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Override - public String exe(AbstractCmd abstractCmd){ - return null; - } - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserCmdExe.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserCmdExe.java deleted file mode 100644 index 83483f6..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserCmdExe.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.exe; - -import com.lightsnail.snailapp.usercrm.app.command.AbstractCmd; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import com.lightsnail.snailapp.usercrm.app.exe.UserCmdExe; - -/** - * @Description:用户cmd处理类接口实现类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Service -public class UserCmdExe implements CmdExeService{ - - private Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Override - public String exe(AbstractCmd abstractCmd){ - return null; - } - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserGroupCmdExe.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserGroupCmdExe.java deleted file mode 100644 index 5a53540..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/app/exe/UserGroupCmdExe.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lightsnail.snailapp.usercrm.app.exe; - -import com.lightsnail.snailapp.usercrm.app.command.AbstractCmd; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import com.lightsnail.snailapp.usercrm.app.exe.UserGroupCmdExe; - -/** - * @Description:用户组cmd处理类接口实现类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:11 - * @version v1.0 - */ -@Service -public class UserGroupCmdExe implements CmdExeService{ - - private Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Override - public String exe(AbstractCmd abstractCmd){ - return null; - } - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AdminAuthorityBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AdminAuthorityBO.java deleted file mode 100644 index f1a96be..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AdminAuthorityBO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:行政权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class AdminAuthorityBO extends AuthorityBO{ - - /** 组织部门 **/ - private Long departmentId; - /** 城市 **/ - private Long cityId; - /** 职位 **/ - private Long jobId; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AuthorityBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AuthorityBO.java deleted file mode 100644 index d99963b..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/AuthorityBO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class AuthorityBO { - - /** 权限类型 **/ - private Integer authorityType; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/DataAuthorityBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/DataAuthorityBO.java deleted file mode 100644 index 5c0e1e9..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/DataAuthorityBO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:数据权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class DataAuthorityBO extends AuthorityBO { - - /** 系统标示 **/ - private String systemName; - /** 表名 **/ - private String tableName; - /** 字段名 **/ - private String columnName; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/RoleBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/RoleBO.java deleted file mode 100644 index 236539e..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/RoleBO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:角色类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class RoleBO { - - /** 角色名称 **/ - private String roleName; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemAuthorityBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemAuthorityBO.java deleted file mode 100644 index 24967fe..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemAuthorityBO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:系统菜单权限类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class SystemAuthorityBO extends AuthorityBO{ - - /** 系统标示 **/ - private String systemName; - /** 功能 **/ - private String funcName; - /** 菜单 **/ - private String categoryName; - /** 按钮 **/ - private String menuName; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemConfig.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemConfig.java deleted file mode 100644 index 884b242..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/SystemConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:系统设置类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class SystemConfig { - - /** 变量名 **/ - private String varName; - /** 变量描述 **/ - private String varDesc; - /** 变量值 **/ - private String value; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserBO.java deleted file mode 100644 index 2929b5b..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserBO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:用户信息类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class UserBO { - - /** 用户名 **/ - private String userName; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserGroupBO.java b/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserGroupBO.java deleted file mode 100644 index bb6de73..0000000 --- a/codemaker-dynamicddd/src/main/java/com/lightsnail/snailapp/usercrm/domain/bo/UserGroupBO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.lightsnail.snailapp.usercrm.domain.bo; - - -import lombok.Data; -import lombok.ToString; - - /** - * @Description:用户组类 - * @Author:fanchunshuai - * @CreateTime:2021-07-07 00:05:10 - * @version v1.0 - */ -@Data -@ToString -public class UserGroupBO { - - /** 组名 **/ - private String groupName; - - -} \ No newline at end of file diff --git a/codemaker-dynamicddd/src/test/java/org/example/AppTest.java b/codemaker-dynamicddd/src/test/java/org/example/AppTest.java deleted file mode 100644 index 6a1d2d7..0000000 --- a/codemaker-dynamicddd/src/test/java/org/example/AppTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.example; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -/** - * Unit test for simple App. - */ -public class AppTest -{ - /** - * Rigorous Test :-) - */ - @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); - } -} diff --git a/codemaker-parent/codemaker-core/src/test/java/ClassUtils.java b/codemaker-parent/codemaker-core/src/test/java/ClassUtils.java deleted file mode 100644 index 7a95e91..0000000 --- a/codemaker-parent/codemaker-core/src/test/java/ClassUtils.java +++ /dev/null @@ -1,307 +0,0 @@ -import javassist.ClassPool; -import javassist.CtClass; -import javassist.CtMethod; -import javassist.NotFoundException; -import javassist.bytecode.CodeAttribute; -import javassist.bytecode.LocalVariableAttribute; -import javassist.bytecode.MethodInfo; -import org.apache.commons.lang3.StringUtils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.JarURLConnection; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.*; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.stream.Stream; - -/** - * Created 2018-10-16. - * - * @author: fanchunshuai - * @version: V1.0 - * @Desc: class加载工具类 - */ -public class ClassUtils { - /** jar中的文件路径分隔符 */ - private static final char SLASH_CHAR = '/'; - /** 包名分隔符 */ - private static final char DOT_CHAR = '.'; - - /** - * 在当前项目中寻找指定包下的所有类 - * - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClass(String packageName, boolean recursive) { - List> classList = new ArrayList<>(); - try { - //获取当前线程的类装载器中相应包名对应的资源 - Enumeration iterator = Thread.currentThread().getContextClassLoader().getResources(packageName.replace(DOT_CHAR, File.separatorChar)); - while (iterator.hasMoreElements()) { - URL url = iterator.nextElement(); - String protocol = url.getProtocol(); - List> childClassList = Collections.emptyList(); - switch (protocol) { - case "file": - childClassList = getClassInFile(url, packageName, recursive); - break; - case "jar": - childClassList = getClassInJar(url, packageName, recursive); - break; - default: - //在某些WEB服务器中运行WAR包时,它不会像TOMCAT一样将WAR包解压为目录的,如JBOSS7,它是使用了一种叫VFS的协议 - System.out.println("unknown protocol " + protocol); - break; - } - classList.addAll(childClassList); - } - return classList; - } catch (IOException e) { - e.printStackTrace(); - } - return Collections.emptyList(); - } - - /** - * 在给定的文件或文件夹中寻找指定包下的所有类 - * - * @param filePath 包的路径 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInFile(String filePath, String packageName, boolean recursive) { - Path path = Paths.get(filePath); - return getClassInFile(path, packageName, recursive); - } - - /** - * 在给定的文件或文件夹中寻找指定包下的所有类 - * - * @param url 包的统一资源定位符 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInFile(URL url, String packageName, boolean recursive) { - try { - Path path = Paths.get(url.toURI()); - return getClassInFile(path, packageName, recursive); - } catch (URISyntaxException e) { - e.printStackTrace(); - } - return Collections.emptyList(); - } - - /** - * 在给定的文件或文件夹中寻找指定包下的所有类 - * - * @param path 包的路径 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInFile(Path path, String packageName, boolean recursive) { - if (!Files.exists(path)) { - return Collections.emptyList(); - } - List> classList = new ArrayList>(); - if (Files.isDirectory(path)) { - if (!recursive) { - return Collections.emptyList(); - } - try { - //获取目录下的所有文件 - Stream stream = Files.list(path); - Iterator iterator = stream.iterator(); - while (iterator.hasNext()) { - classList.addAll(getClassInFile(iterator.next(), packageName, recursive)); - } - } catch (IOException e) { - e.printStackTrace(); - } - } else { - try { - //由于传入的文件可能是相对路径, 这里要拿到文件的实际路径, 如果不存在则报IOException - path = path.toRealPath(); - String pathStr = path.toString(); - //这里拿到的一般的"aa:\bb\...\cc.class"格式的文件名, 要去除末尾的类型后缀(.class) - int lastDotIndex = pathStr.lastIndexOf(DOT_CHAR); - //Class.forName只允许使用用'.'分隔的类名的形式 - String className = pathStr.replace(File.separatorChar, DOT_CHAR); - //获取包名的起始位置 - int beginIndex = className.indexOf(packageName); - if (beginIndex == -1) { - return Collections.emptyList(); - } - className = lastDotIndex == -1 ? className.substring(beginIndex) : className.substring(beginIndex, lastDotIndex); - classList.add(Class.forName(className)); - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - } - return classList; - } - - /** - * 在给定的jar包中寻找指定包下的所有类 - * - * @param filePath 包的路径 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInJar(String filePath, String packageName, boolean recursive) { - try { - JarFile jar = new JarFile(filePath); - return getClassInJar(jar, packageName, recursive); - } catch (IOException e) { - e.printStackTrace(); - } - return Collections.emptyList(); - } - - /** - * 在给定的jar包中寻找指定包下的所有类 - * - * @param url jar包的统一资源定位符 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInJar(URL url, String packageName, boolean recursive) { - try { - JarFile jar = ((JarURLConnection) url.openConnection()).getJarFile(); - return getClassInJar(jar, packageName, recursive); - } catch (IOException e) { - e.printStackTrace(); - } - return Collections.emptyList(); - } - - /** - * 在给定的jar包中寻找指定包下的所有类 - * - * @param jar jar对象 - * @param packageName 用'.'分隔的包名 - * @param recursive 是否递归搜索 - * @return 该包名下的所有类 - */ - public static List> getClassInJar(JarFile jar, String packageName, boolean recursive) { - List> classList = new ArrayList<>(); - //该迭代器会递归得到该jar底下所有的目录和文件 - Enumeration iterator = jar.entries(); - while (iterator.hasMoreElements()) { - //这里拿到的一般的"aa/bb/.../cc.class"格式的Entry或 "包路径" - JarEntry jarEntry = iterator.nextElement(); - if (!jarEntry.isDirectory()) { - String name = jarEntry.getName(); - //对于拿到的文件,要去除末尾的.class - int lastDotClassIndex = name.lastIndexOf(".class"); - if(lastDotClassIndex != -1) { - int lastSlashIndex = name.lastIndexOf(SLASH_CHAR); - name = name.replace(SLASH_CHAR, DOT_CHAR); - if(name.startsWith(packageName)) { - if(recursive || packageName.length() == lastSlashIndex) { - String className = name.substring(0, lastDotClassIndex); - try { - classList.add(Class.forName(className)); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - } - } - } - } - } - return classList; - } - - - public static Map getParameterNames(Class clazz){ - Map paramMap = new HashMap<>(); - try { - ClassPool pool = ClassPool.getDefault(); - CtClass cc = pool.get(clazz.getName()); - - Method [] methods = clazz.getDeclaredMethods(); - for (Method method : methods){ - - CtMethod cm = cc.getDeclaredMethod(method.getName()); - // 使用javaassist的反射方法获取方法的参数名 - MethodInfo methodInfo = cm.getMethodInfo(); - if(methodInfo.getName().contains("lambda") && methodInfo.getName().contains("$")){ - continue; - } - - - CodeAttribute codeAttribute = methodInfo.getCodeAttribute(); - LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag); - if (attr == null) { - paramMap.put(method.getName(),""); - } - String[] paramNames = new String[cm.getParameterTypes().length]; - int paramLength; - if(paramNames.length > 10){ - paramLength = 10; - }else { - paramLength = paramNames.length; - } - - int pos = Modifier.isStatic(cm.getModifiers()) ? 0 : 1; - for (int i = 0; i < paramLength; i++) { - paramNames[i] = attr.variableName(i + pos); - } - - paramMap.put(method.getName(), StringUtils.join(paramNames,",")); - } - } catch (NotFoundException e) { - e.printStackTrace(); - } - - return paramMap; - } - /** - * 读取class - * - * @param classFilePath - * @return - */ - public static byte[] readClassBytes(String classFilePath) { - byte[] raw = null; - InputStream stream = null; - try { - File file = new File(classFilePath); - stream = new FileInputStream(file); - raw = new byte[(int) file.length()]; - stream.read(raw); - } catch (Exception e) { - - } finally { - try { - stream.close(); - } catch (Exception e) { - } - } - return raw; - } - - public static void main(String[] args) { - - } - -} diff --git a/codemaker-parent/codemaker-core/src/test/java/DAOTest.java b/codemaker-parent/codemaker-core/src/test/java/DAOTest.java deleted file mode 100644 index 322e9fa..0000000 --- a/codemaker-parent/codemaker-core/src/test/java/DAOTest.java +++ /dev/null @@ -1,1042 +0,0 @@ -/* -import com.alibaba.fastjson.JSON; -import com.coderman.codemaker.Main; -import com.coderman.codemaker.bean.TableBean; -import com.coderman.codemaker.dao.SqlMapper; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import javax.annotation.Resource; -import java.util.List; - -*/ -/** - * description: DAOTest
- * date: 2020/7/7 8:57
- * author: coderman
- * version: 1.0
- *//* - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = Main.class) -public class DAOTest { - - @Resource - public SqlMapper sqlMapper; - - @Test - public void test(){ - List tableBeanList = sqlMapper.getDBTableBeanList("coder_bank_product"); - System.out.println("tableBeanList= "+ JSON.toJSONString(tableBeanList)); - - } - - @Test - public void testB(){ - String x = "110101\t东城区\t1101\n" + - "110102\t西城区\t1101\n" + - "110105\t朝阳区\t1101\n" + - "110106\t丰台区\t1101\n" + - "110107\t石景山区\t1101\n" + - "110108\t海淀区\t1101\n" + - "110109\t门头沟区\t1101\n" + - "110111\t房山区\t1101\n" + - "110112\t通州区\t1101\n" + - "110113\t顺义区\t1101\n" + - "110114\t昌平区\t1101\n" + - "110115\t大兴区\t1101\n" + - "110116\t怀柔区\t1101\n" + - "110117\t平谷区\t1101\n" + - "110118\t密云区\t1101\n" + - "110119\t延庆区\t1101\n" + - "120101\t和平区\t1201\n" + - "120102\t河东区\t1201\n" + - "120103\t河西区\t1201\n" + - "120104\t南开区\t1201\n" + - "120105\t河北区\t1201\n" + - "120106\t红桥区\t1201\n" + - "120110\t东丽区\t1201\n" + - "120111\t西青区\t1201\n" + - "120112\t津南区\t1201\n" + - "120113\t北辰区\t1201\n" + - "120114\t武清区\t1201\n" + - "120115\t宝坻区\t1201\n" + - "120116\t滨海新区\t1201\n" + - "120117\t宁河区\t1201\n" + - "120118\t静海区\t1201\n" + - "120119\t蓟州区\t1201\n" + - "130102\t长安区\t1301\n" + - "130104\t桥西区\t1301\n" + - "130105\t新华区\t1301\n" + - "130107\t井陉矿区\t1301\n" + - "130108\t裕华区\t1301\n" + - "130109\t藁城区\t1301\n" + - "130110\t鹿泉区\t1301\n" + - "130111\t栾城区\t1301\n" + - "130121\t井陉县\t1301\n" + - "130123\t正定县\t1301\n" + - "130125\t行唐县\t1301\n" + - "130126\t灵寿县\t1301\n" + - "130127\t高邑县\t1301\n" + - "130128\t深泽县\t1301\n" + - "130129\t赞皇县\t1301\n" + - "130130\t无极县\t1301\n" + - "130131\t平山县\t1301\n" + - "130132\t元氏县\t1301\n" + - "130133\t赵县\t1301\n" + - "130171\t石家庄高新技术产业开发区\t1301\n" + - "130172\t石家庄循环化工园区\t1301\n" + - "130181\t辛集市\t1301\n" + - "130183\t晋州市\t1301\n" + - "130184\t新乐市\t1301\n" + - "130202\t路南区\t1302\n" + - "130203\t路北区\t1302\n" + - "130204\t古冶区\t1302\n" + - "130205\t开平区\t1302\n" + - "130207\t丰南区\t1302\n" + - "130208\t丰润区\t1302\n" + - "130209\t曹妃甸区\t1302\n" + - "130224\t滦南县\t1302\n" + - "130225\t乐亭县\t1302\n" + - "130227\t迁西县\t1302\n" + - "130229\t玉田县\t1302\n" + - "130271\t唐山市芦台经济技术开发区\t1302\n" + - "130272\t唐山市汉沽管理区\t1302\n" + - "130273\t唐山高新技术产业开发区\t1302\n" + - "130274\t河北唐山海港经济开发区\t1302\n" + - "130281\t遵化市\t1302\n" + - "130283\t迁安市\t1302\n" + - "130284\t滦州市\t1302\n" + - "130302\t海港区\t1303\n" + - "130303\t山海关区\t1303\n" + - "130304\t北戴河区\t1303\n" + - "130306\t抚宁区\t1303\n" + - "130321\t青龙满族自治县\t1303\n" + - "130322\t昌黎县\t1303\n" + - "130324\t卢龙县\t1303\n" + - "130371\t秦皇岛市经济技术开发区\t1303\n" + - "130372\t北戴河新区\t1303\n" + - "130402\t邯山区\t1304\n" + - "130403\t丛台区\t1304\n" + - "130404\t复兴区\t1304\n" + - "130406\t峰峰矿区\t1304\n" + - "130407\t肥乡区\t1304\n" + - "130408\t永年区\t1304\n" + - "130423\t临漳县\t1304\n" + - "130424\t成安县\t1304\n" + - "130425\t大名县\t1304\n" + - "130426\t涉县\t1304\n" + - "130427\t磁县\t1304\n" + - "130430\t邱县\t1304\n" + - "130431\t鸡泽县\t1304\n" + - "130432\t广平县\t1304\n" + - "130433\t馆陶县\t1304\n" + - "130434\t魏县\t1304\n" + - "130435\t曲周县\t1304\n" + - "130471\t邯郸经济技术开发区\t1304\n" + - "130473\t邯郸冀南新区\t1304\n" + - "130502\t桥东区\t1305\n" + - "130503\t桥西区\t1305\n" + - "130521\t邢台县\t1305\n" + - "130522\t临城县\t1305\n" + - "130523\t内丘县\t1305\n" + - "130524\t柏乡县\t1305\n" + - "130525\t隆尧县\t1305\n" + - "130526\t任县\t1305\n" + - "130527\t南和县\t1305\n" + - "130528\t宁晋县\t1305\n" + - "130529\t巨鹿县\t1305\n" + - "130530\t新河县\t1305\n" + - "130531\t广宗县\t1305\n" + - "130532\t平乡县\t1305\n" + - "130533\t威县\t1305\n" + - "130534\t清河县\t1305\n" + - "130535\t临西县\t1305\n" + - "130571\t河北邢台经济开发区\t1305\n" + - "130581\t南宫市\t1305\n" + - "130582\t沙河市\t1305\n" + - "130602\t竞秀区\t1306\n" + - "130606\t莲池区\t1306\n" + - "130607\t满城区\t1306\n" + - "130608\t清苑区\t1306\n" + - "130609\t徐水区\t1306\n" + - "130623\t涞水县\t1306\n" + - "130624\t阜平县\t1306\n" + - "130626\t定兴县\t1306\n" + - "130627\t唐县\t1306\n" + - "130628\t高阳县\t1306\n" + - "130629\t容城县\t1306\n" + - "130630\t涞源县\t1306\n" + - "130631\t望都县\t1306\n" + - "130632\t安新县\t1306\n" + - "130633\t易县\t1306\n" + - "130634\t曲阳县\t1306\n" + - "130635\t蠡县\t1306\n" + - "130636\t顺平县\t1306\n" + - "130637\t博野县\t1306\n" + - "130638\t雄县\t1306\n" + - "130671\t保定高新技术产业开发区\t1306\n" + - "130672\t保定白沟新城\t1306\n" + - "130681\t涿州市\t1306\n" + - "130682\t定州市\t1306\n" + - "130683\t安国市\t1306\n" + - "130684\t高碑店市\t1306\n" + - "130702\t桥东区\t1307\n" + - "130703\t桥西区\t1307\n" + - "130705\t宣化区\t1307\n" + - "130706\t下花园区\t1307\n" + - "130708\t万全区\t1307\n" + - "130709\t崇礼区\t1307\n" + - "130722\t张北县\t1307\n" + - "130723\t康保县\t1307\n" + - "130724\t沽源县\t1307\n" + - "130725\t尚义县\t1307\n" + - "130726\t蔚县\t1307\n" + - "130727\t阳原县\t1307\n" + - "130728\t怀安县\t1307\n" + - "130730\t怀来县\t1307\n" + - "130731\t涿鹿县\t1307\n" + - "130732\t赤城县\t1307\n" + - "130771\t张家口市高新技术产业开发区\t1307\n" + - "130772\t张家口市察北管理区\t1307\n" + - "130773\t张家口市塞北管理区\t1307\n" + - "130802\t双桥区\t1308\n" + - "130803\t双滦区\t1308\n" + - "130804\t鹰手营子矿区\t1308\n" + - "130821\t承德县\t1308\n" + - "130822\t兴隆县\t1308\n" + - "130824\t滦平县\t1308\n" + - "130825\t隆化县\t1308\n" + - "130826\t丰宁满族自治县\t1308\n" + - "130827\t宽城满族自治县\t1308\n" + - "130828\t围场满族蒙古族自治县\t1308\n" + - "130871\t承德高新技术产业开发区\t1308\n" + - "130881\t平泉市\t1308\n" + - "130902\t新华区\t1309\n" + - "130903\t运河区\t1309\n" + - "130921\t沧县\t1309\n" + - "130922\t青县\t1309\n" + - "130923\t东光县\t1309\n" + - "130924\t海兴县\t1309\n" + - "130925\t盐山县\t1309\n" + - "130926\t肃宁县\t1309\n" + - "130927\t南皮县\t1309\n" + - "130928\t吴桥县\t1309\n" + - "130929\t献县\t1309\n" + - "130930\t孟村回族自治县\t1309\n" + - "130971\t河北沧州经济开发区\t1309\n" + - "130972\t沧州高新技术产业开发区\t1309\n" + - "130973\t沧州渤海新区\t1309\n" + - "130981\t泊头市\t1309\n" + - "130982\t任丘市\t1309\n" + - "130983\t黄骅市\t1309\n" + - "130984\t河间市\t1309\n" + - "131002\t安次区\t1310\n" + - "131003\t广阳区\t1310\n" + - "131022\t固安县\t1310\n" + - "131023\t永清县\t1310\n" + - "131024\t香河县\t1310\n" + - "131025\t大城县\t1310\n" + - "131026\t文安县\t1310\n" + - "131028\t大厂回族自治县\t1310\n" + - "131071\t廊坊经济技术开发区\t1310\n" + - "131081\t霸州市\t1310\n" + - "131082\t三河市\t1310\n" + - "131102\t桃城区\t1311\n" + - "131103\t冀州区\t1311\n" + - "131121\t枣强县\t1311\n" + - "131122\t武邑县\t1311\n" + - "131123\t武强县\t1311\n" + - "131124\t饶阳县\t1311\n" + - "131125\t安平县\t1311\n" + - "131126\t故城县\t1311\n" + - "131127\t景县\t1311\n" + - "131128\t阜城县\t1311\n" + - "131171\t河北衡水高新技术产业开发区\t1311\n" + - "131172\t衡水滨湖新区\t1311\n" + - "131182\t深州市\t1311\n" + - "140105\t小店区\t1401\n" + - "140106\t迎泽区\t1401\n" + - "140107\t杏花岭区\t1401\n" + - "140108\t尖草坪区\t1401\n" + - "140109\t万柏林区\t1401\n" + - "140110\t晋源区\t1401\n" + - "140121\t清徐县\t1401\n" + - "140122\t阳曲县\t1401\n" + - "140123\t娄烦县\t1401\n" + - "140171\t山西转型综合改革示范区\t1401\n" + - "140181\t古交市\t1401\n" + - "140212\t新荣区\t1402\n" + - "140213\t平城区\t1402\n" + - "140214\t云冈区\t1402\n" + - "140215\t云州区\t1402\n" + - "140221\t阳高县\t1402\n" + - "140222\t天镇县\t1402\n" + - "140224\t灵丘县\t1402\n" + - "140225\t浑源县\t1402\n" + - "140226\t左云县\t1402\n" + - "140271\t山西大同经济开发区\t1402\n" + - "140302\t城区\t1403\n" + - "140303\t矿区\t1403\n" + - "140311\t郊区\t1403\n" + - "140321\t平定县\t1403\n" + - "140322\t盂县\t1403\n" + - "140403\t潞州区\t1404\n" + - "140404\t上党区\t1404\n" + - "140405\t屯留区\t1404\n" + - "140406\t潞城区\t1404\n" + - "140423\t襄垣县\t1404\n" + - "140425\t平顺县\t1404\n" + - "140426\t黎城县\t1404\n" + - "140427\t壶关县\t1404\n" + - "140428\t长子县\t1404\n" + - "140429\t武乡县\t1404\n" + - "140430\t沁县\t1404\n" + - "140431\t沁源县\t1404\n" + - "140471\t山西长治高新技术产业园区\t1404\n" + - "140502\t城区\t1405\n" + - "140521\t沁水县\t1405\n" + - "140522\t阳城县\t1405\n" + - "140524\t陵川县\t1405\n" + - "140525\t泽州县\t1405\n" + - "140581\t高平市\t1405\n" + - "140602\t朔城区\t1406\n" + - "140603\t平鲁区\t1406\n" + - "140621\t山阴县\t1406\n" + - "140622\t应县\t1406\n" + - "140623\t右玉县\t1406\n" + - "140681\t怀仁市\t1406\n" + - "140702\t榆次区\t1407\n" + - "140721\t榆社县\t1407\n" + - "140722\t左权县\t1407\n" + - "140723\t和顺县\t1407\n" + - "140724\t昔阳县\t1407\n" + - "140726\t太谷县\t1407\n" + - "140727\t祁县\t1407\n" + - "140728\t平遥县\t1407\n" + - "140729\t灵石县\t1407\n" + - "140781\t介休市\t1407\n" + - "140802\t盐湖区\t1408\n" + - "140821\t临猗县\t1408\n" + - "140822\t万荣县\t1408\n" + - "140823\t闻喜县\t1408\n" + - "140824\t稷山县\t1408\n" + - "140825\t新绛县\t1408\n" + - "140826\t绛县\t1408\n" + - "140827\t垣曲县\t1408\n" + - "140828\t夏县\t1408\n" + - "140829\t平陆县\t1408\n" + - "140830\t芮城县\t1408\n" + - "140881\t永济市\t1408\n" + - "140882\t河津市\t1408\n" + - "140902\t忻府区\t1409\n" + - "140921\t定襄县\t1409\n" + - "140922\t五台县\t1409\n" + - "140923\t代县\t1409\n" + - "140924\t繁峙县\t1409\n" + - "140925\t宁武县\t1409\n" + - "140926\t静乐县\t1409\n" + - "140927\t神池县\t1409\n" + - "140928\t五寨县\t1409\n" + - "140929\t岢岚县\t1409\n" + - "140930\t河曲县\t1409\n" + - "140932\t偏关县\t1409\n" + - "140971\t五台山风景名胜区\t1409\n" + - "140981\t原平市\t1409\n" + - "141002\t尧都区\t1410\n" + - "141021\t曲沃县\t1410\n" + - "141022\t翼城县\t1410\n" + - "141023\t襄汾县\t1410\n" + - "141024\t洪洞县\t1410\n" + - "141025\t古县\t1410\n" + - "141026\t安泽县\t1410\n" + - "141027\t浮山县\t1410\n" + - "141028\t吉县\t1410\n" + - "141029\t乡宁县\t1410\n" + - "141030\t大宁县\t1410\n" + - "141031\t隰县\t1410\n" + - "141032\t永和县\t1410\n" + - "141033\t蒲县\t1410\n" + - "141034\t汾西县\t1410\n" + - "141081\t侯马市\t1410\n" + - "141082\t霍州市\t1410\n" + - "141102\t离石区\t1411\n" + - "141121\t文水县\t1411\n" + - "141122\t交城县\t1411\n" + - "141123\t兴县\t1411\n" + - "141124\t临县\t1411\n" + - "141125\t柳林县\t1411\n" + - "141127\t岚县\t1411\n" + - "141128\t方山县\t1411\n" + - "141129\t中阳县\t1411\n" + - "141130\t交口县\t1411\n" + - "141181\t孝义市\t1411\n" + - "141182\t汾阳市\t1411\n" + - "150102\t新城区\t1501\n" + - "150103\t回民区\t1501\n" + - "150104\t玉泉区\t1501\n" + - "150105\t赛罕区\t1501\n" + - "150121\t土默特左旗\t1501\n" + - "150122\t托克托县\t1501\n" + - "150123\t和林格尔县\t1501\n" + - "150124\t清水河县\t1501\n" + - "150125\t武川县\t1501\n" + - "150171\t呼和浩特金海工业园区\t1501\n" + - "150172\t呼和浩特经济技术开发区\t1501\n" + - "150202\t东河区\t1502\n" + - "150203\t昆都仑区\t1502\n" + - "150205\t石拐区\t1502\n" + - "150206\t白云鄂博矿区\t1502\n" + - "150207\t九原区\t1502\n" + - "150221\t土默特右旗\t1502\n" + - "150222\t固阳县\t1502\n" + - "150223\t达尔罕茂明安联合旗\t1502\n" + - "150271\t包头稀土高新技术产业开发区\t1502\n" + - "150302\t海勃湾区\t1503\n" + - "150303\t海南区\t1503\n" + - "150304\t乌达区\t1503\n" + - "150402\t红山区\t1504\n" + - "150403\t元宝山区\t1504\n" + - "150404\t松山区\t1504\n" + - "150421\t阿鲁科尔沁旗\t1504\n" + - "150422\t巴林左旗\t1504\n" + - "150423\t巴林右旗\t1504\n" + - "150424\t林西县\t1504\n" + - "150425\t克什克腾旗\t1504\n" + - "150426\t翁牛特旗\t1504\n" + - "150428\t喀喇沁旗\t1504\n" + - "150429\t宁城县\t1504\n" + - "150430\t敖汉旗\t1504\n" + - "150502\t科尔沁区\t1505\n" + - "150521\t科尔沁左翼中旗\t1505\n" + - "150522\t科尔沁左翼后旗\t1505\n" + - "150523\t开鲁县\t1505\n" + - "150524\t库伦旗\t1505\n" + - "150525\t奈曼旗\t1505\n" + - "150526\t扎鲁特旗\t1505\n" + - "150571\t通辽经济技术开发区\t1505\n" + - "150581\t霍林郭勒市\t1505\n" + - "150602\t东胜区\t1506\n" + - "150603\t康巴什区\t1506\n" + - "150621\t达拉特旗\t1506\n" + - "150622\t准格尔旗\t1506\n" + - "150623\t鄂托克前旗\t1506\n" + - "150624\t鄂托克旗\t1506\n" + - "150625\t杭锦旗\t1506\n" + - "150626\t乌审旗\t1506\n" + - "150627\t伊金霍洛旗\t1506\n" + - "150802\t临河区\t1508\n" + - "150821\t五原县\t1508\n" + - "150822\t磴口县\t1508\n" + - "150823\t乌拉特前旗\t1508\n" + - "150824\t乌拉特中旗\t1508\n" + - "150825\t乌拉特后旗\t1508\n" + - "150826\t杭锦后旗\t1508\n" + - "150902\t集宁区\t1509\n" + - "150921\t卓资县\t1509\n" + - "150922\t化德县\t1509\n" + - "150923\t商都县\t1509\n" + - "150924\t兴和县\t1509\n" + - "150925\t凉城县\t1509\n" + - "150926\t察哈尔右翼前旗\t1509\n" + - "150927\t察哈尔右翼中旗\t1509\n" + - "150928\t察哈尔右翼后旗\t1509\n" + - "150929\t四子王旗\t1509\n" + - "150981\t丰镇市\t1509\n" + - "152201\t乌兰浩特市\t1522\n" + - "152202\t阿尔山市\t1522\n" + - "152221\t科尔沁右翼前旗\t1522\n" + - "152222\t科尔沁右翼中旗\t1522\n" + - "152223\t扎赉特旗\t1522\n" + - "152224\t突泉县\t1522\n" + - "152501\t二连浩特市\t1525\n" + - "152502\t锡林浩特市\t1525\n" + - "152522\t阿巴嘎旗\t1525\n" + - "152523\t苏尼特左旗\t1525\n" + - "152524\t苏尼特右旗\t1525\n" + - "152525\t东乌珠穆沁旗\t1525\n" + - "152526\t西乌珠穆沁旗\t1525\n" + - "152527\t太仆寺旗\t1525\n" + - "152528\t镶黄旗\t1525\n" + - "152529\t正镶白旗\t1525\n" + - "152530\t正蓝旗\t1525\n" + - "152531\t多伦县\t1525\n" + - "152571\t乌拉盖管委会\t1525\n" + - "152921\t阿拉善左旗\t1529\n" + - "152922\t阿拉善右旗\t1529\n" + - "152923\t额济纳旗\t1529\n" + - "152971\t内蒙古阿拉善经济开发区\t1529\n" + - "210102\t和平区\t2101\n" + - "210103\t沈河区\t2101\n" + - "210104\t大东区\t2101\n" + - "210105\t皇姑区\t2101\n" + - "210106\t铁西区\t2101\n" + - "210111\t苏家屯区\t2101\n" + - "210112\t浑南区\t2101\n" + - "210114\t于洪区\t2101\n" + - "210115\t辽中区\t2101\n" + - "210123\t康平县\t2101\n" + - "210124\t法库县\t2101\n" + - "210181\t新民市\t2101\n" + - "210202\t中山区\t2102\n" + - "210203\t西岗区\t2102\n" + - "210204\t沙河口区\t2102\n" + - "210211\t甘井子区\t2102\n" + - "210212\t旅顺口区\t2102\n" + - "210213\t金州区\t2102\n" + - "210214\t普兰店区\t2102\n" + - "210224\t长海县\t2102\n" + - "210281\t瓦房店市\t2102\n" + - "210283\t庄河市\t2102\n" + - "210302\t铁东区\t2103\n" + - "210303\t铁西区\t2103\n" + - "210304\t立山区\t2103\n" + - "210311\t千山区\t2103\n" + - "210321\t台安县\t2103\n" + - "210323\t岫岩满族自治县\t2103\n" + - "210381\t海城市\t2103\n" + - "210402\t新抚区\t2104\n" + - "210403\t东洲区\t2104\n" + - "210404\t望花区\t2104\n" + - "210411\t顺城区\t2104\n" + - "210421\t抚顺县\t2104\n" + - "210422\t新宾满族自治县\t2104\n" + - "210423\t清原满族自治县\t2104\n" + - "210502\t平山区\t2105\n" + - "210503\t溪湖区\t2105\n" + - "210504\t明山区\t2105\n" + - "210505\t南芬区\t2105\n" + - "210521\t本溪满族自治县\t2105\n" + - "210522\t桓仁满族自治县\t2105\n" + - "210602\t元宝区\t2106\n" + - "210603\t振兴区\t2106\n" + - "210604\t振安区\t2106\n" + - "210624\t宽甸满族自治县\t2106\n" + - "210681\t东港市\t2106\n" + - "210682\t凤城市\t2106\n" + - "210702\t古塔区\t2107\n" + - "210703\t凌河区\t2107\n" + - "210711\t太和区\t2107\n" + - "210726\t黑山县\t2107\n" + - "210727\t义县\t2107\n" + - "210781\t凌海市\t2107\n" + - "210782\t北镇市\t2107\n" + - "210802\t站前区\t2108\n" + - "210803\t西市区\t2108\n" + - "210804\t鲅鱼圈区\t2108\n" + - "210811\t老边区\t2108\n" + - "210881\t盖州市\t2108\n" + - "210882\t大石桥市\t2108\n" + - "211002\t白塔区\t2110\n" + - "211003\t文圣区\t2110\n" + - "211004\t宏伟区\t2110\n" + - "211005\t弓长岭区\t2110\n" + - "211011\t太子河区\t2110\n" + - "211021\t辽阳县\t2110\n" + - "211081\t灯塔市\t2110\n" + - "211103\t兴隆台区\t2111\n" + - "211104\t大洼区\t2111\n" + - "211122\t盘山县\t2111\n" + - "211202\t银州区\t2112\n" + - "211204\t清河区\t2112\n" + - "211221\t铁岭县\t2112\n" + - "211223\t西丰县\t2112\n" + - "211224\t昌图县\t2112\n" + - "211281\t调兵山市\t2112\n" + - "211282\t开原市\t2112\n" + - "211302\t双塔区\t2113\n" + - "211303\t龙城区\t2113\n" + - "211321\t朝阳县\t2113\n" + - "211322\t建平县\t2113\n" + - "211324\t喀喇沁左翼蒙古族自治县\t2113\n" + - "211381\t北票市\t2113\n" + - "211382\t凌源市\t2113\n" + - "211402\t连山区\t2114\n" + - "211403\t龙港区\t2114\n" + - "211404\t南票区\t2114\n" + - "211421\t绥中县\t2114\n" + - "211422\t建昌县\t2114\n" + - "211481\t兴城市\t2114\n" + - "220102\t南关区\t2201\n" + - "220103\t宽城区\t2201\n" + - "220104\t朝阳区\t2201\n" + - "220105\t二道区\t2201\n" + - "220106\t绿园区\t2201\n" + - "220112\t双阳区\t2201\n" + - "220113\t九台区\t2201\n" + - "220122\t农安县\t2201\n" + - "220171\t长春经济技术开发区\t2201\n" + - "220172\t长春净月高新技术产业开发区\t2201\n" + - "220173\t长春高新技术产业开发区\t2201\n" + - "220174\t长春汽车经济技术开发区\t2201\n" + - "220182\t榆树市\t2201\n" + - "220202\t昌邑区\t2202\n" + - "220203\t龙潭区\t2202\n" + - "220204\t船营区\t2202\n" + - "220211\t丰满区\t2202\n" + - "220221\t永吉县\t2202\n" + - "220271\t吉林经济开发区\t2202\n" + - "220272\t吉林高新技术产业开发区\t2202\n" + - "220273\t吉林中国新加坡食品区\t2202\n" + - "220281\t蛟河市\t2202\n" + - "220282\t桦甸市\t2202\n" + - "220283\t舒兰市\t2202\n" + - "220284\t磐石市\t2202\n" + - "220302\t铁西区\t2203\n" + - "220303\t铁东区\t2203\n" + - "220323\t伊通满族自治县\t2203\n" + - "220381\t公主岭市\t2203\n" + - "220382\t双辽市\t2203\n" + - "220402\t龙山区\t2204\n" + - "220403\t西安区\t2204\n" + - "220421\t东丰县\t2204\n" + - "220422\t东辽县\t2204\n" + - "220502\t东昌区\t2205\n" + - "220503\t二道江区\t2205\n" + - "220521\t通化县\t2205\n" + - "220523\t辉南县\t2205\n" + - "220524\t柳河县\t2205\n" + - "220581\t梅河口市\t2205\n" + - "220582\t集安市\t2205\n" + - "220602\t浑江区\t2206\n" + - "220605\t江源区\t2206\n" + - "220621\t抚松县\t2206\n" + - "220622\t靖宇县\t2206\n" + - "220623\t长白朝鲜族自治县\t2206\n" + - "220681\t临江市\t2206\n" + - "220702\t宁江区\t2207\n" + - "220721\t前郭尔罗斯蒙古族自治县\t2207\n" + - "220722\t长岭县\t2207\n" + - "220723\t乾安县\t2207\n" + - "220771\t吉林松原经济开发区\t2207\n" + - "220781\t扶余市\t2207\n" + - "220802\t洮北区\t2208\n" + - "220821\t镇赉县\t2208\n" + - "220822\t通榆县\t2208\n" + - "220871\t吉林白城经济开发区\t2208\n" + - "220881\t洮南市\t2208\n" + - "220882\t大安市\t2208\n" + - "222401\t延吉市\t2224\n" + - "222402\t图们市\t2224\n" + - "222403\t敦化市\t2224\n" + - "222404\t珲春市\t2224\n" + - "222405\t龙井市\t2224\n" + - "222406\t和龙市\t2224\n" + - "222424\t汪清县\t2224\n" + - "222426\t安图县\t2224\n" + - "230102\t道里区\t2301\n" + - "230103\t南岗区\t2301\n" + - "230104\t道外区\t2301\n" + - "230108\t平房区\t2301\n" + - "230109\t松北区\t2301\n" + - "230110\t香坊区\t2301\n" + - "230111\t呼兰区\t2301\n" + - "230112\t阿城区\t2301\n" + - "230113\t双城区\t2301\n" + - "230123\t依兰县\t2301\n" + - "230124\t方正县\t2301\n" + - "230125\t宾县\t2301\n" + - "230126\t巴彦县\t2301\n" + - "230127\t木兰县\t2301\n" + - "230128\t通河县\t2301\n" + - "230129\t延寿县\t2301\n" + - "230183\t尚志市\t2301\n" + - "230184\t五常市\t2301\n" + - "230202\t龙沙区\t2302\n" + - "230203\t建华区\t2302\n" + - "230204\t铁锋区\t2302\n" + - "230206\t富拉尔基区\t2302\n" + - "230207\t碾子山区\t2302\n" + - "230208\t梅里斯达斡尔族区\t2302\n" + - "230221\t龙江县\t2302\n" + - "230223\t依安县\t2302\n" + - "230224\t泰来县\t2302\n" + - "230225\t甘南县\t2302\n" + - "230227\t富裕县\t2302\n" + - "230229\t克山县\t2302\n" + - "230230\t克东县\t2302\n" + - "230231\t拜泉县\t2302\n" + - "230281\t讷河市\t2302\n" + - "230302\t鸡冠区\t2303\n" + - "230303\t恒山区\t2303\n" + - "230304\t滴道区\t2303\n" + - "230305\t梨树区\t2303\n" + - "230306\t城子河区\t2303\n" + - "230307\t麻山区\t2303\n" + - "230321\t鸡东县\t2303\n" + - "230381\t虎林市\t2303\n" + - "230382\t密山市\t2303\n" + - "230402\t向阳区\t2304\n" + - "230403\t工农区\t2304\n" + - "230404\t南山区\t2304\n" + - "230405\t兴安区\t2304\n" + - "230407\t兴山区\t2304\n" + - "230421\t萝北县\t2304\n" + - "230422\t绥滨县\t2304\n" + - "230502\t尖山区\t2305\n" + - "230503\t岭东区\t2305\n" + - "230505\t四方台区\t2305\n" + - "230506\t宝山区\t2305\n" + - "230521\t集贤县\t2305\n" + - "230522\t友谊县\t2305\n" + - "230523\t宝清县\t2305\n" + - "230524\t饶河县\t2305\n" + - "230602\t萨尔图区\t2306\n" + - "230603\t龙凤区\t2306\n" + - "230604\t让胡路区\t2306\n" + - "230605\t红岗区\t2306\n" + - "230606\t大同区\t2306\n" + - "230621\t肇州县\t2306\n" + - "230622\t肇源县\t2306\n" + - "230623\t林甸县\t2306\n" + - "230624\t杜尔伯特蒙古族自治县\t2306\n" + - "230671\t大庆高新技术产业开发区\t2306\n" + - "230702\t伊春区\t2307\n" + - "230703\t南岔区\t2307\n" + - "230704\t友好区\t2307\n" + - "230705\t西林区\t2307\n" + - "230706\t翠峦区\t2307\n" + - "230707\t新青区\t2307\n" + - "230708\t美溪区\t2307\n" + - "230709\t金山屯区\t2307\n" + - "230710\t五营区\t2307\n" + - "230711\t乌马河区\t2307\n" + - "230712\t汤旺河区\t2307\n" + - "230713\t带岭区\t2307\n" + - "230714\t乌伊岭区\t2307\n" + - "230715\t红星区\t2307\n" + - "230716\t上甘岭区\t2307\n" + - "230722\t嘉荫县\t2307\n" + - "230781\t铁力市\t2307\n" + - "230804\t前进区\t2308\n" + - "230805\t东风区\t2308\n" + - "230811\t郊区\t2308\n" + - "230822\t桦南县\t2308\n" + - "230826\t桦川县\t2308\n" + - "230828\t汤原县\t2308\n" + - "230881\t同江市\t2308\n" + - "230882\t富锦市\t2308\n" + - "230883\t抚远市\t2308\n" + - "230902\t新兴区\t2309\n" + - "230903\t桃山区\t2309\n" + - "230904\t茄子河区\t2309\n" + - "230921\t勃利县\t2309\n" + - "231002\t东安区\t2310\n" + - "231003\t阳明区\t2310\n" + - "231004\t爱民区\t2310\n" + - "231005\t西安区\t2310\n" + - "231025\t林口县\t2310\n" + - "231081\t绥芬河市\t2310\n" + - "231083\t海林市\t2310\n" + - "231084\t宁安市\t2310\n" + - "231085\t穆棱市\t2310\n" + - "231086\t东宁市\t2310\n" + - "231102\t爱辉区\t2311\n" + - "231121\t嫩江县\t2311\n" + - "231123\t逊克县\t2311\n" + - "231124\t孙吴县\t2311\n" + - "231181\t北安市\t2311\n" + - "231182\t五大连池市\t2311\n" + - "231202\t北林区\t2312\n" + - "231221\t望奎县\t2312\n" + - "231222\t兰西县\t2312\n" + - "231223\t青冈县\t2312\n" + - "231224\t庆安县\t2312\n" + - "231225\t明水县\t2312\n" + - "231226\t绥棱县\t2312\n" + - "231281\t安达市\t2312\n" + - "231282\t肇东市\t2312\n" + - "231283\t海伦市\t2312\n" + - "232701\t漠河市\t2327\n" + - "232721\t呼玛县\t2327\n" + - "232722\t塔河县\t2327\n" + - "232761\t加格达奇区\t2327\n" + - "232762\t松岭区\t2327\n" + - "232763\t新林区\t2327\n" + - "232764\t呼中区\t2327\n" + - "310101\t黄浦区\t3101\n" + - "310104\t徐汇区\t3101\n" + - "310105\t长宁区\t3101\n" + - "310106\t静安区\t3101\n" + - "310107\t普陀区\t3101\n" + - "310109\t虹口区\t3101\n" + - "310110\t杨浦区\t3101\n" + - "310112\t闵行区\t3101\n" + - "310113\t宝山区\t3101\n" + - "310114\t嘉定区\t3101\n" + - "310115\t浦东新区\t3101\n" + - "310116\t金山区\t3101\n" + - "310117\t松江区\t3101\n" + - "310120\t奉贤区\t3101\n" + - "310151\t崇明区\t3101\n" + - "320102\t玄武区\t3201\n" + - "320104\t秦淮区\t3201\n" + - "320105\t建邺区\t3201\n" + - "320106\t鼓楼区\t3201\n" + - "320111\t浦口区\t3201\n" + - "320113\t栖霞区\t3201\n" + - "320114\t雨花台区\t3201\n" + - "320115\t江宁区\t3201\n" + - "320116\t六合区\t3201\n" + - "320117\t溧水区\t3201\n" + - "320118\t高淳区\t3201\n" + - "320205\t锡山区\t3202\n" + - "320206\t惠山区\t3202\n" + - "320211\t滨湖区\t3202\n" + - "320213\t梁溪区\t3202\n" + - "320214\t新吴区\t3202\n" + - "320281\t江阴市\t3202\n" + - "320282\t宜兴市\t3202\n" + - "320302\t鼓楼区\t3203\n" + - "320303\t云龙区\t3203\n" + - "320305\t贾汪区\t3203\n" + - "320311\t泉山区\t3203\n" + - "320312\t铜山区\t3203\n" + - "320321\t丰县\t3203\n" + - "320322\t沛县\t3203\n" + - "320324\t睢宁县\t3203\n" + - "320371\t徐州经济技术开发区\t3203\n" + - "320381\t新沂市\t3203\n" + - "320382\t邳州市\t3203\n" + - "320402\t天宁区\t3204\n" + - "320404\t钟楼区\t3204\n" + - "320411\t新北区\t3204\n" + - "320412\t武进区\t3204\n" + - "320413\t金坛区\t3204\n" + - "320481\t溧阳市\t3204\n" + - "320505\t虎丘区\t3205\n" + - "320506\t吴中区\t3205\n" + - "320507\t相城区\t3205\n" + - "320508\t姑苏区\t3205\n" + - "320509\t吴江区\t3205\n" + - "320571\t苏州工业园区\t3205\n" + - "320582\t张家港市\t3205\n" + - "320583\t昆山市\t3205\n" + - "320585\t太仓市\t3205\n" + - "320602\t崇川区\t3206\n" + - "320611\t港闸区\t3206\n" + - "320612\t通州区\t3206\n" + - "320623\t如东县\t3206\n" + - "320671\t南通经济技术开发区\t3206\n" + - "320681\t启东市\t3206\n" + - "320682\t如皋市\t3206\n" + - "320684\t海门市\t3206\n" + - "320685\t海安市\t3206\n" + - "320703\t连云区\t3207\n" + - "320706\t海州区\t3207\n" + - "320707\t赣榆区\t3207\n" + - "320722\t东海县\t3207\n" + - "320723\t灌云县\t3207\n" + - "320724\t灌南县\t3207\n" + - "320771\t连云港经济技术开发区\t3207\n" + - "320772\t连云港高新技术产业开发区\t3207\n" + - "320803\t淮安区\t3208\n" + - "320804\t淮阴区\t3208\n" + - "320812\t清江浦区\t3208\n" + - "320813\t洪泽区\t3208\n" + - "320826\t涟水县\t3208\n" + - "320830\t盱眙县\t3208\n" + - "320831\t金湖县\t3208\n" + - "320871\t淮安经济技术开发区\t3208\n" + - "320902\t亭湖区\t3209\n" + - "320903\t盐都区\t3209\n" + - "320904\t大丰区\t3209\n" + - "320921\t响水县\t3209\n" + - "320922\t滨海县\t3209\n" + - "320923\t阜宁县\t3209\n" + - "320924\t射阳县\t3209\n" + - "320925\t建湖县\t3209\n" + - "320971\t盐城经济技术开发区\t3209\n" + - "320981\t东台市\t3209\n" + - "321002\t广陵区\t3210\n" + - "321003\t邗江区\t3210\n" + - "321012\t江都区\t3210\n" + - "321023\t宝应县\t3210\n" + - "321071\t扬州经济技术开发区\t3210\n" + - "321081\t仪征市\t3210\n" + - "321084\t高邮市\t3210\n" + - "321102\t京口区\t3211\n" + - "321111\t润州区\t3211\n" + - "321112\t丹徒区\t3211\n" + - "321171\t镇江新区\t3211\n" + - "321181\t丹阳市\t3211\n" + - "321182\t扬中市\t3211\n" + - "321183\t句容市\t3211\n" + - "321202\t海陵区\t3212\n" + - "321203\t高港区\t3212\n" + - "321204\t姜堰区\t3212\n" + - "321271\t泰州医药高新技术产业开发区\t3212\n" + - "321281\t兴化市\t3212\n" + - "321282\t靖江市\t3212\n" + - "321283\t泰兴市\t3212\n" + - "321302\t宿城区\t3213\n" + - "321311\t宿豫区\t3213\n" + - "321322\t沭阳县\t3213\n" + - "321323\t泗阳县\t3213\n" + - "321324\t泗洪县\t3213\n" + - "321371\t宿迁经济技术开发区\t3213\n" + - "330102\t上城区\t3301\n" + - "330103\t下城区\t3301\n" + - "330104\t江干区\t3301\n" + - "330105\t拱墅区\t3301\n" + - "330106\t西湖区\t3301\n" + - "330108\t滨江区\t3301\n" + - "330109\t萧山区\t3301\n" + - "330110\t余杭区\t3301\n" + - "330111\t富阳区\t3301\n" + - "330112\t临安区\t3301\n" + - "330127\t淳安县\t3301\n" + - "330182\t建德市\t3301\n" + - "330203\t海曙区\t3302\n" + - "330205\t江北区\t3302\n" + - "330206\t北仑区\t3302\n" + - "330211\t镇海区\t3302\n" + - "330212\t鄞州区\t3302\n" + - "330213\t奉化区\t3302\n" + - "330225\t象山县\t3302\n" + - "330226\t宁海县\t3302\n" + - "330282\t慈溪市\t3302\n" + - "330302\t鹿城区\t3303\n" + - "330304\t瓯海区\t3303\n" + - "330305\t洞头区\t3303\n" + - "330326\t平阳县\t3303\n" + - "330327\t苍南县\t3303\n" + - "330328\t文成县\t3303\n" + - "330329\t泰顺县\t3303\n" + - "330371\t温州经济技术开发区\t3303\n" + - "330381\t瑞安市\t3303\n" + - "330382\t乐清市\t3303\n" + - "330402\t南湖区\t3304\n" + - "330411\t秀洲区\t3304\n" + - "330421\t嘉善县\t3304\n" + - "330424\t海盐县\t3304\n" + - "330481\t海宁市\t3304\n" + - "330482\t平湖市\t3304\n" + - "330483\t桐乡市\t3304\n" + - "330502\t吴兴区\t3305\n" + - "330503\t南浔区\t3305\n" + - "330521\t德清县\t3305\n" + - "330522\t长兴县\t3305\n" + - "330523\t安吉县\t3305\n" + - "330602\t越城区\t3306\n" + - "330603\t柯桥区\t3306\n" + - "330604\t上虞区\t3306\n" + - "330681\t诸暨市\t3306\n" + - "330683\t嵊州市\t3306\n" + - "330702\t婺城区\t3307\n" + - "330703\t金东区\t3307\n" + - "330723\t武义县\t3307\n" + - "330726\t浦江县\t3307\n" + - "330727\t磐安县\t3307\n" + - "330781\t兰溪市\t3307\n" + - "330782\t义乌市\t3307\n" + - "330783\t东阳市\t3307\n" + - "330784\t永康市\t3307\n" + - "330802\t柯城区\t3308\n" + - "330803\t衢江区\t3308\n" + - "330822\t常山县\t3308\n" + - "330824\t开化县\t3308\n" + - "330825\t龙游县\t3308\n" + - "330881\t江山市\t3308\n" + - "330902\t定海区\t3309\n" + - "330903\t普陀区\t3309\n" + - "330921\t岱山县\t3309\n" + - "330922\t嵊泗县\t3309\n" + - "331002\t椒江区\t3310\n" + - "331003\t黄岩区\t3310\n" + - "331004\t路桥区\t3310\n" + - "331022\t三门县\t3310\n" + - "331023\t天台县\t3310\n" + - "331024\t仙居县\t3310\n" + - "331081\t温岭市\t3310\n" + - "331082\t临海市\t3310\n" + - "331102\t莲都区\t3311\n" + - "331121\t青田县\t3311\n" + - "331122\t缙云县\t3311\n" + - "331123\t遂昌县\t3311\n" + - "331124\t松阳县\t3311\n" + - "331125\t云和县\t3311\n" + - "331126\t庆元县\t3311\n" + - "331127\t景宁畲族自治县\t3311\n" + - "331181\t龙泉市\t3311\n" + - "340102\t瑶海区\t3401\n" + - "340103\t庐阳区\t3401\n" + - "340104\t蜀山区\t3401\n" + - "340111\t包河区\t3401\n" + - "340121\t长丰县\t3401\n" + - "340122\t肥东县\t3401\n" + - "340123\t肥西县\t3401\n" + - "340124\t庐江县\t3401\n" + - "340171\t合肥高新技术产业开发区\t3401\n" + - "340172\t合肥经济技术开发区\t3401\n" + - "340173\t合肥新站高新技术产业开发区\t3401\n" + - "340181\t巢湖市\t3401\n" + - "340202\t镜湖区\t3402\n" + - "340203\t弋江区\t3402\n" + - "340207\t鸠江区\t3402\n" + - "340208\t三山区\t3402\n" + - "340221\t芜湖县\t3402\n" + - "340222\t繁昌县\t3402\n" + - "340223\t南陵县\t3402\n" + - "340225\t无为县\t3402\n" + - "340271\t芜湖经济技术开发区\t3402\n" + - "340272\t安徽芜湖长江大桥经济开发区\t3402\n" + - "340302\t龙子湖区\t3403\n" + - "340303\t蚌山区\t3403\n" + - "340304\t禹会区\t3403\n" + - "340311\t淮上区\t3403\n" + - "340321\t怀远县\t3403\n" + - "340322\t五河县\t3403\n" + - "340323\t固镇县\t3403\n" + - "340371\t蚌埠市高新技术开发区\t3403\n" + - "340372\t蚌埠市经济开发区\t3403\n" + - "340402\t大通区\t3404\n" + - "340403\t田家庵区\t3404\n" + - "340404\t谢家集区\t3404\n" + - "340405\t八公山区\t3404\n" + - "340406\t潘集区\t3404\n" + - "340421\t凤台县\t3404\n" + - "340422\t寿县\t3404\n" + - "340503\t花山区\t3405\n" + - "340504\t雨山区\t3405\n" + - "340506\t博望区\t3405\n" + - "340521\t当涂县\t3405\n" + - "340522\t含山县\t3405\n" + - "340523\t和县\t3405\n" + - "340602\t杜集区\t3406\n" + - "340603\t相山区\t3406\n" + - "340604\t烈山区\t3406\n" + - "340621\t濉溪县\t3406\n" + - "340705\t铜官区\t3407\n" + - "340706\t义安区\t3407\n" + - "340711\t郊区\t3407\n" + - "340722\t枞阳县\t3407\n" + - "340802\t迎江区\t3408\n" + - "340803\t大观区\t3408\n" + - "340811\t宜秀区\t3408\n" + - "340822\t怀宁县\t3408\n" + - "340825\t太湖县\t3408\n" + - "340826\t宿松县\t3408\n" + - "340827\t望江县\t3408\n" + - "340828\t岳西县\t3408\n" + - "340871\t安徽安庆经济开发区\t3408\n" + - "340881\t桐城市\t3408\n" + - "340882\t潜山市\t3408\n" + - "341002\t屯溪区\t3410\n" + - "341003\t黄山区\t3410\n" + - "341004\t徽州区\t3410\n" + - "341021\t歙县\t3410\n" + - "341022\t休宁县\t3410\n" + - "341023\t黟县\t3410\n" + - "341024\t祁门县\t3410\n" + - "341102\t琅琊区\t3411\n" + - "341103\t南谯区\t3411\n" + - "341122\t来安县\t3411\n" + - "341124\t全椒县\t3411\n"; - System.out.println(x.replaceAll("\t",",")); - } - -} -*/ diff --git a/codemaker-parent/codemaker-core/src/test/java/ProjectTemplateConfigTest.java b/codemaker-parent/codemaker-core/src/test/java/ProjectTemplateConfigTest.java deleted file mode 100644 index a8cac22..0000000 --- a/codemaker-parent/codemaker-core/src/test/java/ProjectTemplateConfigTest.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -import com.coderman.codemaker.Main; -import com.coderman.codemaker.config.ProjectTemplateConfig; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -*/ -/** - * description: ProjectTemplateConfigTest
- * date: 2020/7/7 22:34
- * author: coderman
- * version: 1.0
- *//* - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = Main.class) -public class ProjectTemplateConfigTest { - @Autowired - private ProjectTemplateConfig projectTemplateConfig; - - @Test - public void testGetConfig(){ - System.out.println(projectTemplateConfig.toString()); - } - -} -*/ diff --git a/codemaker-parent/codemaker-core/src/test/java/Test.java b/codemaker-parent/codemaker-core/src/test/java/Test.java deleted file mode 100644 index 60257b4..0000000 --- a/codemaker-parent/codemaker-core/src/test/java/Test.java +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Description: - * date: 2021/11/22 - * - * @author fanchunshuai - * @version 1.0.0 - * @since JDK 1.8 - */ -public class Test { - public static void main(String[] args) { - - } -} diff --git a/codemaker-parent/codemaker-core/src/test/java/TestTableName.java b/codemaker-parent/codemaker-core/src/test/java/TestTableName.java deleted file mode 100644 index c5e8d95..0000000 --- a/codemaker-parent/codemaker-core/src/test/java/TestTableName.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -import org.junit.Test; - -*/ -/** - * description: TestTableName
- * date: 2020/7/7 20:42
- * author: coderman
- * version: 1.0
- *//* - -public class TestTableName { - @Test - public void testHumpTableName(){ - String resultName = ""; - String tableName1 = "room_source_equipment"; - if(!tableName1.contains("_")){ - resultName = tableName1; - }else { - String [] tableNameArr = tableName1.split("_"); - int length = tableNameArr.length; - - StringBuilder builder = new StringBuilder(); - builder.append(tableNameArr[0]); - for (int i = 1;i < length;i++){ - String tag = tableNameArr[i].substring(0,1).toUpperCase().concat(tableNameArr[i].substring(1).toLowerCase()); - builder.append(tag); - } - resultName = builder.toString(); - } - System.out.println("resultName = "+resultName); - - } -} -*/ diff --git a/codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest.java similarity index 96% rename from codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest.java rename to codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest.java index ba2de1e..6ebe5d4 100644 --- a/codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest.java +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest.java @@ -1,3 +1,5 @@ +package com.tianhua.codemaker.service.expertest; + import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; @@ -8,7 +10,7 @@ import java.lang.reflect.Method; * Description: * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest2.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest2.java similarity index 92% rename from codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest2.java rename to codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest2.java index f9d05eb..314e3e5 100644 --- a/codemaker-parent/codemaker-core/src/test/java/ClassLoaderTest2.java +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/ClassLoaderTest2.java @@ -1,13 +1,13 @@ -import java.io.File; +package com.tianhua.codemaker.service.expertest; + import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; -import java.net.URLClassLoader; /** * Description: * date: 2021/12/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/test/java/RbcClassLoader.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/RbcClassLoader.java similarity index 96% rename from codemaker-parent/codemaker-core/src/test/java/RbcClassLoader.java rename to codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/RbcClassLoader.java index a0e97f4..6c275c8 100644 --- a/codemaker-parent/codemaker-core/src/test/java/RbcClassLoader.java +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/RbcClassLoader.java @@ -1,4 +1,4 @@ - +package com.tianhua.codemaker.service.expertest; import java.io.IOException; import java.lang.reflect.Field; @@ -11,7 +11,7 @@ import java.net.URLClassLoader; * Description: * date: 2021/11/22 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/test/java/Test2.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test2.java similarity index 94% rename from codemaker-parent/codemaker-core/src/test/java/Test2.java rename to codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test2.java index 0c4fbc4..cdb566b 100644 --- a/codemaker-parent/codemaker-core/src/test/java/Test2.java +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test2.java @@ -1,11 +1,12 @@ -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; +package com.tianhua.codemaker.service.expertest; + +import com.tianhua.codemaker.bean.ClassContentBean; +import com.tianhua.codemaker.bean.plantuml.ClassBean; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Map; -import java.lang.reflect.*; import java.util.*; @@ -13,7 +14,7 @@ import java.util.*; * Description: * date: 2021/12/18 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-parent/codemaker-core/src/test/java/Test3.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test3.java similarity index 66% rename from codemaker-parent/codemaker-core/src/test/java/Test3.java rename to codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test3.java index d3b27a5..f37b526 100644 --- a/codemaker-parent/codemaker-core/src/test/java/Test3.java +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/expertest/Test3.java @@ -1,25 +1,22 @@ -import com.coderman.codemaker.bean.ClassContentBean; -import com.coderman.codemaker.bean.plantuml.ClassBean; +package com.tianhua.codemaker.service.expertest; + +import com.tianhua.codemaker.bean.ClassContentBean; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.regex.Pattern; /** * Description: * date: 2021/12/18 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ public class Test3 { public static void main(String[] args) throws NoSuchMethodException, SecurityException { - String paramStr = "java.util.List"; + String paramStr = "java.util.List"; String [] paramArr = paramStr.split("\\."); List paramList = new ArrayList<>(); diff --git a/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/AnnotationParseServiceTest.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/AnnotationParseServiceTest.java new file mode 100644 index 0000000..a5df31d --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/AnnotationParseServiceTest.java @@ -0,0 +1,44 @@ +/* +package com.tianhua.codemaker.service.test; + +import com.tianhua.codemaker.service.AnnotationParseService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.stereotype.Service; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.util.ResourceUtils; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +*/ +/** + * Description: + * date: 2022/1/24 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + *//* + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {com.tianhua.codemaker.Main.class}) +public class AnnotationParseServiceTest{ + + @Autowired + private AnnotationParseService annotationParseService; + @Autowired + ResourceLoader resourceLoader; + @Test + public void testbuildAnnotationTagBeanMap(){ + annotationParseService.buildAnnotationTagBeanMap(); + } + +} +*/ diff --git a/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/BaseTest.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/BaseTest.java new file mode 100644 index 0000000..3dccdd9 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/BaseTest.java @@ -0,0 +1,19 @@ +package com.tianhua.codemaker.service.test; + +import com.tianhua.codemaker.Main; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * Description: + * date: 2022/1/18 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {Main.class}) +public class BaseTest { +} diff --git a/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/ReadPlantUMLServiceTest.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/ReadPlantUMLServiceTest.java new file mode 100644 index 0000000..7650103 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/ReadPlantUMLServiceTest.java @@ -0,0 +1,47 @@ +/* +package com.tianhua.codemaker.service.test; + +import com.tianhua.codemaker.api.DomainElementHandler; +import com.tianhua.codemaker.api.IValidateService; +import com.tianhua.codemaker.bean.plantuml.PlantUmlContextBean; +import com.tianhua.codemaker.service.plantuml.ReadDomainPlantDocService; +import com.tianhua.codemaker.service.plantuml.ReadPlantUMLDocService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +*/ +/** + * Description: + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + *//* + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {com.tianhua.codemaker.Main.class}) +public class ReadPlantUMLServiceTest { + + @Autowired + private ReadDomainPlantDocService readDomainPlantDocService; + + @Resource(name = "validateUtilService") + private IValidateService validateService; + @Resource(name = "domainBoElementHandler") + private DomainElementHandler domainElementHandler; + + @Test + public void testRead(){ + PlantUmlContextBean plantUmlContextBean = readDomainPlantDocService.getPlantUmlContextBean("auth-domainV5.puml"); + plantUmlContextBean.setDerivedPlantUmlContextBean(new PlantUmlContextBean()); + domainElementHandler.getElementBeanList(plantUmlContextBean); + validateService.dealValidate(plantUmlContextBean); + } +} +*/ diff --git a/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/VarRegistryServiceTest.java b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/VarRegistryServiceTest.java new file mode 100644 index 0000000..6749aa7 --- /dev/null +++ b/codemaker-parent/codemaker-core/src/test/java/com/tianhua/codemaker/service/test/VarRegistryServiceTest.java @@ -0,0 +1,36 @@ +/* +package com.tianhua.codemaker.service.test; + +import com.tianhua.codemaker.service.registry.element.MapperXmlVarRegistry; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.Map; + +*/ +/** + * Description: + * date: 2022/1/25 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + *//* + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = {com.tianhua.codemaker.Main.class}) +public class VarRegistryServiceTest { + + @Resource(name = "mapperXmlVarRegistry") + private MapperXmlVarRegistry mapperXmlVarRegistry; + + @Test + public void testGetTemplateVarMap(){ + Map map = mapperXmlVarRegistry.getTemplateVar(); + + } +} +*/ -- Gitee From 04dfc598ea5df55d2754383022951d59e9c15f1b Mon Sep 17 00:00:00 2001 From: fanchunshuai <2217011466@qq.com> Date: Sat, 2 Apr 2022 22:24:12 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codemaker-core/.idea/.gitignore | 2 - codemaker-core/codermaker-core.iml | 126 ------------ .../codemaker/dberparse/Constants.java | 2 +- ...rvice.java => ERPlantUMLParseService.java} | 14 +- ...l.java => ERPlantUMLParseServiceImpl.java} | 181 ++++++++++-------- .../codemaker/dberparse/bean/EntityBean.java | 2 +- .../dberparse/bean/EntityFieldBean.java | 2 +- .../dbops/service/DBErParseService.java | 2 +- .../dbops/service/DBErParseServiceImpl.java | 12 +- .../authtest/AdminAuthorityFacadeTest.java | 2 +- .../infosys/authtest/AuthorityFacadeTest.java | 2 +- .../authtest/DataAuthorityFacadeTest.java | 2 +- .../authtest/DataColumnConfigFacadeTest.java | 2 +- .../infosys/authtest/MenuFacadeTest.java | 2 +- .../infosys/authtest/ModuleFacadeTest.java | 2 +- .../infosys/authtest/RoleFacadeTest.java | 2 +- .../infosys/authtest/RoleGroupFacadeTest.java | 2 +- .../authtest/SystemAuthorityFacadeTest.java | 2 +- .../infosys/authtest/UserGroupFacadeTest.java | 2 +- .../authtest/UserRoleMappingFacadeTest.java | 2 +- codemaker-dynamicddd/pom.xml | 148 -------------- .../com/tianhua/codemaker/javs/Constants.java | 14 ++ doc/baseDBandDDD.md | 0 doc/baseDBandDDDandInvoke.md | 0 doc/baseDDD.md | 0 ...codeMaker)-v3\347\211\210\346\234\254.png" | Bin 0 -> 1104570 bytes API.md => doc/md/API.md | 0 CHANGELIST.md => doc/md/CHANGELIST.md | 25 +++ COMPOENTREGIST.md => doc/md/COMPOENTREGIST.md | 0 CONFIG.md => doc/md/CONFIG.md | 4 +- DDDPLANTUMLDOC.md => doc/md/DDDPLANTUMLDOC.md | 0 MODULE.md => doc/md/MODULE.md | 0 doc/md/USEDBYALLDOC.md | 145 ++++++++++++++ USEDBYDBANDDDD.md => doc/md/USEDBYDBANDDDD.md | 0 .../md/USEDBYDBANDPLANTUML.md | 0 .../md/USEDBYDYNAMICDDD.md | 0 doc/md/USEDBYJAVSSCRIPT.md | 16 ++ USEDBYONLYDB.md => doc/md/USEDBYONLYDB.md | 0 ...6\271\346\241\210\346\226\207\346\241\243" | 30 +++ 39 files changed, 368 insertions(+), 379 deletions(-) delete mode 100644 codemaker-core/.idea/.gitignore delete mode 100644 codemaker-core/codermaker-core.iml rename codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/{ERPantUMLParseService.java => ERPlantUMLParseService.java} (55%) rename codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/{ERPantUMLParseServiceImpl.java => ERPlantUMLParseServiceImpl.java} (52%) delete mode 100644 codemaker-dynamicddd/pom.xml create mode 100644 codemaker-parent/codemaker-javs/src/main/java/com/tianhua/codemaker/javs/Constants.java delete mode 100644 doc/baseDBandDDD.md delete mode 100644 doc/baseDBandDDDandInvoke.md delete mode 100644 doc/baseDDD.md create mode 100644 "doc/img/\345\244\251\347\224\273-\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260(codeMaker)-v3\347\211\210\346\234\254.png" rename API.md => doc/md/API.md (100%) rename CHANGELIST.md => doc/md/CHANGELIST.md (78%) rename COMPOENTREGIST.md => doc/md/COMPOENTREGIST.md (100%) rename CONFIG.md => doc/md/CONFIG.md (99%) rename DDDPLANTUMLDOC.md => doc/md/DDDPLANTUMLDOC.md (100%) rename MODULE.md => doc/md/MODULE.md (100%) create mode 100644 doc/md/USEDBYALLDOC.md rename USEDBYDBANDDDD.md => doc/md/USEDBYDBANDDDD.md (100%) rename USEDBYDBANDPLANTUML.md => doc/md/USEDBYDBANDPLANTUML.md (100%) rename USEDBYDYNAMICDDD.md => doc/md/USEDBYDYNAMICDDD.md (100%) create mode 100644 doc/md/USEDBYJAVSSCRIPT.md rename USEDBYONLYDB.md => doc/md/USEDBYONLYDB.md (100%) create mode 100644 "v3\346\240\270\345\277\203\351\232\276\347\202\271\345\256\236\347\216\260\346\212\200\346\234\257\346\226\271\346\241\210\346\226\207\346\241\243" diff --git a/codemaker-core/.idea/.gitignore b/codemaker-core/.idea/.gitignore deleted file mode 100644 index 5c98b42..0000000 --- a/codemaker-core/.idea/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Default ignored files -/workspace.xml \ No newline at end of file diff --git a/codemaker-core/codermaker-core.iml b/codemaker-core/codermaker-core.iml deleted file mode 100644 index 7db19df..0000000 --- a/codemaker-core/codermaker-core.iml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/Constants.java b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/Constants.java index 768be8a..aa9cb4c 100644 --- a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/Constants.java +++ b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/Constants.java @@ -4,7 +4,7 @@ package com.coderman.codemaker.dberparse; * Description: * date: 2021/8/19 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseService.java b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseService.java similarity index 55% rename from codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseService.java rename to codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseService.java index 5b04627..e2d13e8 100644 --- a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseService.java +++ b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseService.java @@ -1,5 +1,6 @@ package com.coderman.codemaker.dberparse; +import com.coderman.codemaker.dberparse.bean.EntityBean; import com.coderman.codemaker.dberparse.bean.ParseRequestBean; import java.util.List; @@ -8,15 +9,24 @@ import java.util.List; * Description: * date: 2021/8/12 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ -public interface ERPantUMLParseService { +public interface ERPlantUMLParseService { /** * e-r图解析入口 * @param contentList * @return 解析完成的DDL语句 */ List parseERPlantUML(List contentList); + + /** + * 根据plantuml 内容构建数据库表模型 + * @param contentList + * @return + */ + List getPlantUmlContextBean(List contentList); + + } diff --git a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseServiceImpl.java b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseServiceImpl.java similarity index 52% rename from codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseServiceImpl.java rename to codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseServiceImpl.java index 3e528cd..8d358c9 100644 --- a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPantUMLParseServiceImpl.java +++ b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/ERPlantUMLParseServiceImpl.java @@ -1,131 +1,139 @@ package com.coderman.codemaker.dberparse; -import com.alibaba.fastjson.JSON; import com.coderman.codemaker.dberparse.bean.EntityBean; import com.coderman.codemaker.dberparse.bean.EntityFieldBean; -import com.coderman.codemaker.dberparse.bean.ParseRequestBean; import com.coderman.codemaker.dberparse.enums.ColumnTypeEnums; import org.apache.commons.lang.StringUtils; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Description: * date: 2021/8/12 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ -public class ERPantUMLParseServiceImpl implements ERPantUMLParseService { +public class ERPlantUMLParseServiceImpl implements ERPlantUMLParseService { @Override public List parseERPlantUML(List contentList) { List list = getPlantUmlContextBean(contentList); - System.out.println(JSON.toJSONString(list)); List ddlList = new ArrayList<>(); - list.stream().forEach(tableEntity-> ddlList.add(getDDLSQL(tableEntity))); + if(CollectionUtils.isEmpty(list)){ + return ddlList; + } + list.stream().forEach(tableEntity -> ddlList.add(getDDLSQL(tableEntity))); return ddlList; } /** * 通过表字段模型构建DDL sql + * * @param tableBean * @return */ - private String getDDLSQL(EntityBean tableBean){ + private String getDDLSQL(EntityBean tableBean) { StringBuilder sqlBuilder = new StringBuilder(); - sqlBuilder.append("CREATE TABLE `" + tableBean.getTableName()+"`("); - for (EntityFieldBean entityFieldBean : tableBean.getColumnBeanList()){ - sqlBuilder.append("`" + entityFieldBean.getColumnName() + "` "); + sqlBuilder.append("CREATE TABLE `" + tableBean.getTableName() + "`(\n"); + for (EntityFieldBean entityFieldBean : tableBean.getColumnBeanList()) { + sqlBuilder.append("\t`" + entityFieldBean.getColumnName() + "` "); sqlBuilder.append(entityFieldBean.getColumnType()); - if(entityFieldBean.getColumnName().equals("id")){ + if (entityFieldBean.getColumnName().equals("id")) { sqlBuilder.append(" NOT NULL AUTO_INCREMENT "); - }else { - sqlBuilder.append(" NOT NULL DEFAULT "+entityFieldBean.getDefaultValue()); + } else { + sqlBuilder.append(" NOT NULL DEFAULT " + entityFieldBean.getDefaultValue()); } - sqlBuilder.append(" COMMENT '"+entityFieldBean.getColumnDesc()+"',"); + sqlBuilder.append(" COMMENT '" + entityFieldBean.getColumnDesc().trim() + "',\n"); } - if(!CollectionUtils.isEmpty(tableBean.getIndexBeanList())){ - for (EntityFieldBean indexFieldBean : tableBean.getIndexBeanList()){ - if(indexFieldBean.getPkey() != null && indexFieldBean.getPkey()){ - sqlBuilder.append(" PRIMARY KEY (`"+indexFieldBean.getColumnName()+"`),"); + if (!CollectionUtils.isEmpty(tableBean.getIndexBeanList())) { + for (EntityFieldBean indexFieldBean : tableBean.getIndexBeanList()) { + if (indexFieldBean.getPkey() != null && indexFieldBean.getPkey()) { + sqlBuilder.append(" PRIMARY KEY (`" + indexFieldBean.getColumnName() + "`),\n"); continue; } - if(indexFieldBean.getUKey() != null && indexFieldBean.getUKey()){ + if (indexFieldBean.getUKey() != null && indexFieldBean.getUKey()) { String uKeyName = getUkeyIndexName(indexFieldBean.getColumnName()); String uColumnNames = getUkeyColumnName(indexFieldBean.getColumnName()); - sqlBuilder.append(" UNIQUE KEY `"+uKeyName+"` ("+uColumnNames+") COMMENT '联合唯一索引',"); + sqlBuilder.append(" UNIQUE KEY `" + uKeyName + "` (" + uColumnNames + ") COMMENT '联合唯一索引',\n"); continue; } - sqlBuilder.append(" KEY `idx_"+indexFieldBean.getColumnName()+"` (`"+indexFieldBean.getColumnName()+"`),"); + sqlBuilder.append(" KEY `idx_" + indexFieldBean.getColumnName() + "` (`" + indexFieldBean.getColumnName() + "`),\n"); } } - sqlBuilder = sqlBuilder.deleteCharAt(sqlBuilder.length()-1); - sqlBuilder.append(") ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '"+tableBean.getTableDesc()+"';\n"); - System.out.println(sqlBuilder.toString()); + sqlBuilder = sqlBuilder.deleteCharAt(sqlBuilder.length() - 1); + sqlBuilder.append(") \nENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '" + tableBean.getTableDesc() + "';\n\n"); + return sqlBuilder.toString(); } - - private String getUkeyIndexName(String columns){ - String [] arr = columns.split(","); + private String getUkeyIndexName(String columns) { + String[] arr = columns.split(","); StringBuilder builder = new StringBuilder("uniq"); - for (String col : arr){ - builder.append("_"+col.substring(0,1)); + for (String col : arr) { + builder.append("_" + col.substring(0, 1)); } return builder.toString(); } /** * 处理联合主键 + * * @param columns * @return */ - private String getUkeyColumnName(String columns){ - String [] arr = columns.split(","); + private String getUkeyColumnName(String columns) { + String[] arr = columns.split(","); StringBuilder builder = new StringBuilder(); - for (String col : arr){ - builder.append("`"+col+"`,"); + for (String col : arr) { + builder.append("`" + col + "`,"); } - return builder.deleteCharAt(builder.length()-1).toString(); + return builder.deleteCharAt(builder.length() - 1).toString(); } /** * 解析plantUML文件内容 + * * @return */ - private List getPlantUmlContextBean(List contentList){ + public List getPlantUmlContextBean(List contentList) { + if(CollectionUtils.isEmpty(contentList)){ + return null; + } + List elementList = new ArrayList<>(); List entityBeanList = new ArrayList<>(); //对entity进行解析 - for(String str : contentList){ - if(StringUtils.isEmpty(str) || str.contains("@startuml") || str.contains("package")){ + for (String str : contentList) { + if (StringUtils.isEmpty(str) || str.contains("@startuml") || str.contains("package")) { continue; } - if(str.trim().contains("{")){ + if (str.trim().contains("{")) { elementList.add(str.trim()); continue; } - if(str.trim().contains("}")){ + if (str.trim().contains("}")) { elementList.add(str.trim()); - parseClassElement(elementList,entityBeanList); + parseClassElement(elementList, entityBeanList); elementList.clear(); continue; } - if(str.trim().contains(":") || (str.trim().contains("key") && str.trim().contains("extend"))){ + if (str.trim().contains(":") || (str.trim().contains("key") && str.trim().contains("extend"))) { elementList.add(str.trim()); } } @@ -136,38 +144,37 @@ public class ERPantUMLParseServiceImpl implements ERPantUMLParseService { /** * 解析文件内容整体路由 + * * @param elementList * @param entityBeanList */ - private void parseClassElement(List elementList, List entityBeanList){ + private void parseClassElement(List elementList, List entityBeanList) { EntityBean columnBean = buildClassBean(elementList); entityBeanList.add(columnBean); } - /** * 解析class类型数据 + * * @param elementList * @return */ - private EntityBean buildClassBean(List elementList ){ + private EntityBean buildClassBean(List elementList) { EntityBean entityBean = new EntityBean(); - String[] array = elementList.get(0).trim().replace("{","").trim().split(" "); + String[] array = elementList.get(0).trim().replace("{", "") + .replace("entity", "") + .replace("as ", "") + .replace("\"", "").trim().split(" "); - String classMetaInfoArr = array[1]; - List columnBeanList = getColumnBeanList(elementList.subList(1,elementList.size())); - List indexBeanList = getIndexBeanList(elementList.subList(1,elementList.size())); + List columnBeanList = getColumnBeanList(elementList.subList(1, elementList.size())); + List indexBeanList = getIndexBeanList(elementList.subList(1, elementList.size())); entityBean.setColumnBeanList(columnBeanList); entityBean.setIndexBeanList(indexBeanList); - if(classMetaInfoArr.contains("-")){ - entityBean.setTableName(classMetaInfoArr.split("-")[0].replace("\"","")); - entityBean.setTableDesc(classMetaInfoArr.split("-")[1].replace("\"","")); - }else { - entityBean.setTableName(classMetaInfoArr.replace("\"","")); - entityBean.setTableDesc(array[2].replace("\"","")); - } + + entityBean.setTableName(array[0]); + entityBean.setTableDesc(array[1]); return entityBean; } @@ -175,42 +182,43 @@ public class ERPantUMLParseServiceImpl implements ERPantUMLParseService { /** * 获取表字段信息 + * * @param elementList * @return */ - private List getColumnBeanList(List elementList){ + private List getColumnBeanList(List elementList) { List fieldBeanList = new ArrayList<>(); - for (String fieldStr : elementList){ - if(fieldStr.contains("key") && fieldStr.contains("extend")){ + for (String fieldStr : elementList) { + if (fieldStr.contains("key") && fieldStr.contains("extend")) { break; } - if(!fieldStr.trim().contains(":")){ + if (!fieldStr.trim().contains(":")) { continue; } String[] fieldArr = fieldStr.trim().split(":"); EntityFieldBean entityFieldBean = new EntityFieldBean(); - String [] tagArr = fieldArr[1].split("/"); + String[] tagArr = fieldArr[1].split("/"); entityFieldBean.setColumnDesc(tagArr[0]); entityFieldBean.setColumnName(fieldArr[0]); - if(tagArr.length == 2) { + if (tagArr.length == 2) { entityFieldBean.setColumnType(tagArr[1]); } - if(tagArr.length == 3) { + if (tagArr.length == 3) { entityFieldBean.setDefaultValue(tagArr[1]); entityFieldBean.setColumnType(tagArr[2]); } - if (StringUtils.isEmpty(entityFieldBean.getDefaultValue())){ - if(ColumnTypeEnums.isInt(entityFieldBean.getColumnType())){ + if (StringUtils.isEmpty(entityFieldBean.getDefaultValue())) { + if (ColumnTypeEnums.isInt(entityFieldBean.getColumnType())) { entityFieldBean.setDefaultValue("0"); } - if(ColumnTypeEnums.isVarchar(entityFieldBean.getColumnType())){ + if (ColumnTypeEnums.isVarchar(entityFieldBean.getColumnType())) { entityFieldBean.setDefaultValue("''"); } - if(ColumnTypeEnums.isDate(entityFieldBean.getColumnType())){ + if (ColumnTypeEnums.isDate(entityFieldBean.getColumnType())) { entityFieldBean.setDefaultValue("'2000-01-01 00:00:00'"); } } @@ -222,38 +230,39 @@ public class ERPantUMLParseServiceImpl implements ERPantUMLParseService { /** * 获取索引信息 + * * @param elementList * @return */ - private List getIndexBeanList(List elementList){ + private List getIndexBeanList(List elementList) { List indexBeanList = new ArrayList<>(); - int index = 0; - for (int i = 0;i < elementList.size();i ++){ + int index = 0; + for (int i = 0; i < elementList.size(); i++) { - if(elementList.get(i).contains("key") && elementList.get(i).contains("extend")){ - index = i+1; + if (elementList.get(i).contains("key") && elementList.get(i).contains("extend")) { + index = i + 1; break; } } - for (String fieldStr : elementList.subList(index,elementList.size())){ - EntityFieldBean indexFieldBean =new EntityFieldBean(); - if(!fieldStr.contains(":")){ + for (String fieldStr : elementList.subList(index, elementList.size())) { + EntityFieldBean indexFieldBean = new EntityFieldBean(); + if (!fieldStr.contains(":")) { continue; } - String [] indexArr = fieldStr.split(":"); - if(indexArr[0].toLowerCase().equals(Constants.PKEY)){ + String[] indexArr = fieldStr.split(":"); + if (indexArr[0].toLowerCase().equals(Constants.PKEY)) { indexFieldBean.setPkey(true); indexFieldBean.setColumnName(indexArr[1]); indexBeanList.add(indexFieldBean); } - if(indexArr[0].toLowerCase().equals(Constants.UKEY)){ + if (indexArr[0].toLowerCase().equals(Constants.UKEY)) { indexFieldBean.setUKey(true); indexFieldBean.setColumnName(indexArr[1]); indexBeanList.add(indexFieldBean); } - if(indexArr[0].toLowerCase().equals(Constants.KEY)){ + if (indexArr[0].toLowerCase().equals(Constants.KEY)) { indexFieldBean.setColumnName(indexArr[1]); indexBeanList.add(indexFieldBean); } @@ -262,4 +271,20 @@ public class ERPantUMLParseServiceImpl implements ERPantUMLParseService { return indexBeanList; } + /** + * 判断字符串中是否包含中文 + * + * @param str 待校验字符串 + * @return 是否为中文 + * @warn 不能校验是否为中文标点符号 + */ + public static boolean isContainChinese(String str) { + Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); + Matcher m = p.matcher(str); + if (m.find()) { + return true; + } + return false; + } + } diff --git a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityBean.java b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityBean.java index 2d5960b..e9a53a5 100644 --- a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityBean.java +++ b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityBean.java @@ -6,7 +6,7 @@ import java.util.List; * Description: * date: 2021/8/12 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 表entity模型 diff --git a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityFieldBean.java b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityFieldBean.java index ca9b0c2..e5b1af6 100644 --- a/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityFieldBean.java +++ b/codemaker-dberparse/src/main/java/com/coderman/codemaker/dberparse/bean/EntityFieldBean.java @@ -4,7 +4,7 @@ package com.coderman.codemaker.dberparse.bean; * Description: * date: 2021/8/12 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 * 表字段模型 diff --git a/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseService.java b/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseService.java index 071ba1b..54e8d3a 100644 --- a/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseService.java +++ b/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseService.java @@ -10,7 +10,7 @@ import java.util.List; * Description: * date: 2021/8/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ diff --git a/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseServiceImpl.java b/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseServiceImpl.java index 05d4371..290f84e 100644 --- a/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseServiceImpl.java +++ b/codemaker-dbops/src/main/java/com/coderman/codemaker/dbops/service/DBErParseServiceImpl.java @@ -1,7 +1,7 @@ package com.coderman.codemaker.dbops.service; -import com.coderman.codemaker.dberparse.ERPantUMLParseService; -import com.coderman.codemaker.dberparse.ERPantUMLParseServiceImpl; +import com.coderman.codemaker.dberparse.ERPlantUMLParseService; +import com.coderman.codemaker.dberparse.ERPlantUMLParseServiceImpl; import com.coderman.codemaker.dberparse.bean.ParseRequestBean; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Value; @@ -18,23 +18,23 @@ import java.util.List; * Description: * date: 2021/8/24 * - * @author fanchunshuai + * @author shenshuai * @version 1.0.0 * @since JDK 1.8 */ @Service @Component public class DBErParseServiceImpl implements DBErParseService{ - private ERPantUMLParseService erPantUMLParseService = new ERPantUMLParseServiceImpl(); + private ERPlantUMLParseService erPantUMLParseService = new ERPlantUMLParseServiceImpl(); @Value("${sqlfile.path}") private String path; @Override public List parseERPlantUML(List contentList,String fileName) throws IOException { List sqlContent = erPantUMLParseService.parseERPlantUML(contentList); File file = new File(path+"/"+fileName+".sql"); - if(!file.exists()){ + /* if(!file.exists()){ file.createNewFile(); - } + }*/ FileUtils.writeLines(file,sqlContent); return sqlContent; } diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AdminAuthorityFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AdminAuthorityFacadeTest.java index 2710ca2..d95e136 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AdminAuthorityFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AdminAuthorityFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AuthorityFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AuthorityFacadeTest.java index 3f8fd91..d8c4363 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AuthorityFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/AuthorityFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataAuthorityFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataAuthorityFacadeTest.java index be14c56..2cd15cc 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataAuthorityFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataAuthorityFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataColumnConfigFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataColumnConfigFacadeTest.java index 7bc39bb..7fdbd64 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataColumnConfigFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/DataColumnConfigFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/MenuFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/MenuFacadeTest.java index 3df2a46..62269fc 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/MenuFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/MenuFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/ModuleFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/ModuleFacadeTest.java index 2150995..21e55c2 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/ModuleFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/ModuleFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleFacadeTest.java index e7fe766..6404b29 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleGroupFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleGroupFacadeTest.java index 82b6aee..0568867 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleGroupFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/RoleGroupFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemAuthorityFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemAuthorityFacadeTest.java index 5e16a01..bb5422f 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemAuthorityFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/SystemAuthorityFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserGroupFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserGroupFacadeTest.java index ad394fe..9aafefa 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserGroupFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserGroupFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserRoleMappingFacadeTest.java b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserRoleMappingFacadeTest.java index 3b1d96d..7ffcd69 100644 --- a/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserRoleMappingFacadeTest.java +++ b/codemaker-dubbo/dubbo-core/src/test/java/com/coderman/infosys/authtest/UserRoleMappingFacadeTest.java @@ -24,7 +24,7 @@ import org.junit.runner.RunWith; /** * @Description:单元测试 -* @Author:fanchunshuai +* @Author:shenshuai * @CreateTime:2021-06-25 09:19:38 * @version v1.0 */ diff --git a/codemaker-dynamicddd/pom.xml b/codemaker-dynamicddd/pom.xml deleted file mode 100644 index 71906c0..0000000 --- a/codemaker-dynamicddd/pom.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - 4.0.0 - - com.coderman.dynamicddd - codemaker-dynamicddd - 1.0-SNAPSHOT - - codemaker-dynamicddd - - http://www.example.com - - - UTF-8 - 1.8 - 1.8 - 1.8 - 2.1.9.RELEASE - 1.2.0.Final - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - - com.alibaba.spring - spring-context-support - 1.0.5 - - - - org.mapstruct - mapstruct - ${mapstruct.version} - - - org.mapstruct - mapstruct-processor - ${mapstruct.version} - - - org.mapstruct - mapstruct-jdk8 - ${mapstruct.version} - - - - - commons-collections - commons-collections - 3.2.1 - - - - com.alibaba - fastjson - 1.2.72 - - - - commons-lang - commons-lang - 2.4 - - - - org.slf4j - slf4j-api - 1.7.28 - - - org.slf4j - slf4j-ext - 1.7.28 - - - - org.slf4j - slf4j-log4j12 - 1.7.28 - - - - org.springframework.boot - spring-boot-starter-log4j2 - ${spring-boot.version} - - - - org.aspectj - aspectjweaver - 1.9.4 - - - - org.aspectj - aspectjrt - 1.8.13 - - - - org.assertj - assertj-core - 3.9.1 - - - - - - - - junit - junit - 4.11 - test - - - - org.projectlombok - lombok - 1.18.8 - - - - org.springframework.boot - spring-boot - - - org.slf4j - slf4j-api - - - - - - - - diff --git a/codemaker-parent/codemaker-javs/src/main/java/com/tianhua/codemaker/javs/Constants.java b/codemaker-parent/codemaker-javs/src/main/java/com/tianhua/codemaker/javs/Constants.java new file mode 100644 index 0000000..2cb2546 --- /dev/null +++ b/codemaker-parent/codemaker-javs/src/main/java/com/tianhua/codemaker/javs/Constants.java @@ -0,0 +1,14 @@ +package com.tianhua.codemaker.javs; + +/** + * Description: + * date: 2022/3/11 + * + * @author shenshuai + * @version 1.0.0 + * @since JDK 1.8 + */ +public class Constants { + + public static final String JAVS = "javs"; +} diff --git a/doc/baseDBandDDD.md b/doc/baseDBandDDD.md deleted file mode 100644 index e69de29..0000000 diff --git a/doc/baseDBandDDDandInvoke.md b/doc/baseDBandDDDandInvoke.md deleted file mode 100644 index e69de29..0000000 diff --git a/doc/baseDDD.md b/doc/baseDDD.md deleted file mode 100644 index e69de29..0000000 diff --git "a/doc/img/\345\244\251\347\224\273-\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260(codeMaker)-v3\347\211\210\346\234\254.png" "b/doc/img/\345\244\251\347\224\273-\344\275\216\344\273\243\347\240\201\345\271\263\345\217\260(codeMaker)-v3\347\211\210\346\234\254.png" new file mode 100644 index 0000000000000000000000000000000000000000..6316fb649c83481c93436b3c54a6f0030f19198c GIT binary patch literal 1104570 zcmeFac|29?`!`HPjTgQ0%1Gv}x0p zgVr!KLi(ga2%HIH4f3DHFeIaMLEXO~+-WwOkEGy7+IHS27TP zB>8f0YAeZR8FraiVpmQg4jvrU?d-s}yLJYWSrHVNl2E>7-$CeJJeuw?RIMPkR8}}! zB$D_*Y)sc`EHjN6}e`j{+kQGEkO8#49 zMgOfOg+Xz&&Oc}SFKi<9J~j<@8@6|Q{)MsDh9C>gCj9r-6L$z!)R<6n>%XTL*m!@I ze?A-n*G0|^~j(EoFo79=H)jnU{k@y%eG=e|3yPXjWH(u7uVAmRsHf8<>s5T>ba-0$kzNe{nrG zT;Z=b2pg{OHzWT`K5V$cUvCgLT;Z=Z=^L)_*JI-iSNLn8&PG)D>#^}hRQPM7n~kXO zmq4aJ0EUgI@ShM-Ccr$AApG@^NM0%>Mvy>+0$X@ywQGU=;nA)|JvtI0hL1 zRGQ?cC<4w{pZ?VKm3dv|`p;WwbQ@?Qxoplj28^bFqV2l7yyn=tw}$@ci@H#8KU0s|!u3+K%tQzYbY+%FwG_Svr=ykvQpLWKQ+R`Kb zq4B=A5@ex@u{YY+rFt%AVmmwouz?OPn!UeND%j-Xzu{7Lw0@8wQVQLAN^jkV?_jhn z%A&^b7i-+u|BvRlzPN8D*g{~t?XXZa$8%B~?b`-T=5^N!&w!48Y4l)v^xv4cb%psq z+K^Xdc@lN>gnGKyuz??5oDW*};V%hnXBogMY=8HC-L?6>zY@VQ3t2EX zvGaS^TiEjFtE1z)MpNvJEzNolH#!sltyCud)wqmk z?7D07pXRvU$jBBSMi##D(A}@QiIh0h6>Qgi&XLorqdzZ7v;UR)#zwujZU%dj%EoFB z0jCn_Bi?l%PDPp5b($=6hXLlzuU&W&WZ`$3-{}Nb{Bo{Is*?8GOqkOrwhmUkl(Eh9i_=6DeCBl4%0 zxJCp1hKr;ij~Yjt?AOG&?!&JTw~ulYDN*r-e)+Wv?}se>7Qy4A(($qrj*ar`EiBGq zb@b?>paZ|w-|!>;rm{SYkzFIvF}t08z2z#;UUjvf0_=Y+K;Cfl8;*X%(f`4{ptfhj z(TDzPj{Xm;zv0|Boclk;Z|iwZ?1ppSh~hV*_`d+^jVM0;)kYNm7qR$LT=oao{NLaF zH&Of_p0MHEH=O&1b6<~M`0sUVJz8ZWa{s?3av!C*{JnDfwk*T4(glYygjC0=62y5g z&%JCh^e!1Z{N`8a1Wptoar-!WLhceP6*D_DbFM2>&Z``9Yl$>|@3;y<8Hv*3k1scC zr-b5=mKU5h0iR(hJtl{u#pM@pY-~zMJ^|BNVM3%tzg1g#T~3{h8cn6pWNRt0T~vU? zHH%Ogyi2(kG^#Ar#3=p(brD1;wi-;Scq&DxtBd*Llk2jZBlPHt@O zH$@#dV50;`QU*MeRQ&~SqKUkT+$ToHy&8!Z({$G*`>;N%WS>v+2?Crr!39#K%M0J0 zZj1ApAB<6-+k$NC(WLTiQj6o`O{Wc)X5?_RwbzDEuDiH@aKGyc#P4kjH7`PdA9j|$ zM8HXLC5?F9Wg=S51CX5+;G}uRjwaMSXWH(?%`+pnpTUeT&Gt}+o*5W!_yuotiyL{P zOh*MX0#32MG|F|~=m9yJnNaLFG)?^s14R|=p;Dk_<>nwkQ7>42MdJSdD@lthf~@)I zyEztE^JWUN&@;os!yC)7u^dq90u=s+bol%}qp`6Z8_V%~Hw32pcloXj>DX9~MoT}@ zpS1uRlJdWqDBe(<4aM0|mJMY=!q$!Wd#~)4O?-L&z(y<{O8`AN6jreb< zs|{t@P?im4*-(~$lEYfpcC46mHPq*KQrNJ1#IVwQ$H&14>B`A={g7Iw?b}UJ= z#c#sVZcb>Wf)}}_1Bt2d7rf`~zE<6447rl9I-y(K;}=$DF5G&>F+R4kJZ8Q$Kh2*n zFSt6>SKQH;;PwS159#|H#E~WUP2nCD**>M7wxlz#kXqPiytZ z|9!=0)Ip&7o$}P_AR;BLmdk>=e>a(fn>%7p!{Jvgw~vXF`SZX@W>xW8S79iB4*0Bi zOZ!Ys+468%ByjP{C57{E-fEoUS?qg?4yLt5YeO%*GE0a=v z-=6lUJ)z7CLH85;fFN2={+)8~>Vw#fB9M9N2unO<-io7r7)2}Q|2O-7W{*+FBn1Iy z#t|MSSs@B)jAlqKKAZ;221z+3Q{%7?Z3+aOA4K`4D3DEwx8F>_c|e3GnFJb|>P_^} zSIZ!W#+rPl1q*NT(5lhSdI$9CXZSw7$dgNy#7YCoru4`)*mC-T_WVcB`(r(9cI`Zu zE{Da@b``n2Aw@TQGdHpO)PS+w^Ik^oH?QNV6_b1jINhg*?!C^e-@p3(1B^c!;+9RX zY-2UJB%$@2v}y$*)75@o%qgS>jV^am^;d8I%f6P|tqQ8~?DuyAJdALn%ICLcmSk+V ztYBUO5}tw1l2RHnl)NWazgd-DUUhqKNhTeJW{jtgROzg9n^}sqAIW!T-{#dj$c|$- z(?Zh!`Dtbx?VcC=G*rFfiDo5e!-*nMAs|!z*zGYU#C=P_`Ce zPtI6ybnS(I=$bq>w)#SUF=M!lHA&9c9XM4q1kX&HKelNT$mc_lPp+77Do1W9jnB#V z4FvQqlsJ*Nt8HJ^i7JL4U}!EhWEo10T_sX_<>60H5qjkNE4nY=h#v1j*Pi-LdECmP z1p%kb6P3cqMJze-EfzQ<;J8cB%<3~R${!7vdktZp%J|F}I0(#Il4%QKow1oPc$14P z$eX7F{uvA|e|P1L=5w{WtrQ9n(Ja=dJMiXR>|uv%=e z6~wN4MwH@Z$*yVP5Pi9|6TWpqkb%L)9~*d`{2{vbY;qvk4=e>}N0hwcWuXOKWvsh| zZiGe^)o(V9i1NmVCrcnZoK`ImqI;b%(q;c3{ zf;k**hfQwC;D==8;+S}$Rmqj1ACJ?c#n7Pi z4{M8qE(H%`_BS_T94#Yj233t6%wQzeP#%nN8zMqQ4)+~v$wL+0Ni12BFR}5!4Hb8I zvUU@2zH>OohYFV?*n!)4H?Gvv(5jpCS`xJ?R>;>M3({REqaaqQju98>R;$~&>S_0o zFSd9u-4|V1oGfXFb2`a|k2Qg?xPHrT5jadxcpbGpsWrS)vR{M!xMw@MfMh4(;vpgBtRQI3 zt!X7h7o`N*Vi!B5Z%oj+c0ES|71>C5lH%mZs}>P(JGrZF2RDEyY4?$Dys%<3Oo`s; zQYDjtTwiDGV5cqxG5-{GVlVmtXf9Rauuy;h(@0-MtX3O8_aF=G)?f^?`<1nsuHEpP zeKXZrosj9A<%2P8UJz7mbtylEO*nc=820nq<8CeRYI8*O66p4o!#G4K*G-QRaIzaG zpFpqq6Tuy1lD_8Tq1QIuJAkSuEgkGA|Gbuv%J206F-ZYFj3d7{Nzk6gd1ME*;we}w z(qiZ z>=}_{DzeQ)Jm5tu?gXkB?SOUiQM-$N|2C{84Y~D4CGt=*mC7sVH706!al*Uw*?>!k z{7nSW8LGgIw*#%N7vCjPl2ub7MDOGWNv7HBtP};dBAM>kQ}k8eA(na?X0D9yBzQ^M!*WMeP0!--Ll&NX_B=|z3I|J;i;=cCpzikiOE$LOaa{Gnft%G~n zkj2^xBjMKc=&ei^S!h)SPrU*<4jZyPn%C`^2{;pTlg-g(RF*# zeVl-O#Ps09B*;Uv&Gs>oB6s?L>U}(dWz&J-?o6jTp*LQH8_8Pkwxjz8z-pezMlb&1 zy!oMS8bBLaB5NM@zhvy^rzZB*$)xvInMF4P^fK-W6<{Nx&W86USKcRpGX^2pB&Leu z3t4tpL5>U@H>U>sAqHmjnkiJG!E&7_KM4MX`g#re1_FEF#(gPV6KZf#lz$7Vs;>}J z5ZuaTdmS4Xsz%i%gKQc`8NU9cwUr!K2lFBexpN(TzzM{CQtZPW{Hf$A#4sVQhP$_M zcsk5&-0{Sqzo^aXl&~bksGpW4*(OsMytY^{()vi-7cmF2T!prvFZi%XR8c+yre^n= zOw$FwctB@J4tY&Q8F)>O#)g)CU|OT-+))|QK+JJ(N86MAINE}0jxVUJ+=6SnNXa-5 zeR;B+cLUvU1fG0yKf#RbA6(FiLjh(F)oXDRF#gjiYi@dN_fTO*|HSLAf)3gIUC)CX z#9+rWqE3*&;9>CI#&2c!9ik%Oq{XHlM}33}+Ont?=UGBS(rp^k(p zBxs(XK_5T?4^Vu;QAdo70bj4mLndVAE+A0n26}nuxFZev(7*nvieC+%t3FCA-lthx zEO;d`7+tZy*faq!0>lXet1b@CCgSwP$UWVHqpfc{A&8E>2#WIR!ftIa*0P++CFpA& zM`r2oKHm;o=IJ1FlUjB`qw{Ai0P=?KkT~hGxZVthMnzbJ=`QqJV7Gn0Y{Ho$LpR4Y zqnlrWz>>4-=YIm@Av(Z^DML{&Tou5r6?fd%LcU+w>HC#uymV?Ai%?7gwZ#s z@`oEE!c(fm!D@efbr_X#>Lj?xZ<3nF1tv_4-;oko=6D2oy)!wtpGXGr!-tg)p!%hV zgL}Eci3)!zd;}vhAr*Cb5;667S(1H$2T?U%(=+7de%{GMzY6@Aj*<-u5Ueg1jHH+f zPaKTC&oc#j%u`M4xf+=urhz(npkR*%yO`d26boH51f}^=lXM;o_fN>ph8XTU8tR5o zV52Xn4Xn!39Acv{SiFyg1E>Y=2BWA63)e30V!M?A!@Zqv5JNZr8C>)qK5o1AmKvS} z1-x}yo`O5Zu7Ruj8QuIvk02bNS)ELi{Z|1ssIm;rwo_uFCLlWl@9ob?7g2r)gkV$5 zK2!+U0XeYKHkaQ6>lJ=|3wlieu}CEQxQw;~av-ZTN8ca<@u_qT^ltlM^yqLBbYK&D zxF|moDl8W-tF-@$-KwMIgs^a~_kSop!?xi_o?9!`S0& z58jilEfzd626>``!IL^}0?sFgl&4TT$#xB9EFGHIaRnPVVDpd(9oq{O<+I4mbTHhB zcajaz*W`fLRFskMw57$|E)`8sKnLuFebg+C;q{=!7{6B$*oq1a*zFgWe6UYoIF4cU zVf4mN2zt%jpZ_xioF+#?!08&J;=TKR&jujF|CbMfPw8^2lhJyA`~8u}U|uQ;xy-O+ zY(|I~3sW&AcnLzV*>RPlxP~Ae#WRGbA@VgkAdFgvDj&F!Dg1#C!jrMlN1<e&cVybUx>z6{50L215wFbX4!X-| z9w><_1rcHnuAOj%7@H=BR|v(!uMpt8*r%Bf##-x1V-O-+w-94}JS{a#6@Z|~{wY+3 z;x8k1`Dw11IsvCm#PQcC6R?KqHv*vFY0Pha2NrT80NMzEP=ojXbO4mTC;nVM@W1AF zRfXUB(z zm!Dg86xdR@-;F(J`bk%@R&}W9(f!?dx7=lr9Laz2T-+$nC4QTKOEhGH;;l&jV&7NI zeVV{pq;5uf=w-eF_;-)KJGUX=)JNV$DDKh?a8F0_tx&khrUYg!v60t61V>vL(n^53 zEOEHe)FSixG{9ODnZ@1cMP=loRYBq~_g_GKYyl7yiXFim4RKd@yH_3k@zJkuB)3+0 zfAmF}1KYWGOStDfpTvvT)Fm9N5$%trdv>#IX(np0r_6inh`vjgSwWB2LREHuO_asf zBOf;j8kKJnv}rw*+hJGaW;;062^o)=hM5qN?j5d2lbs74`thPgN0)zmF|U=F<;jm! zEMS%LDn_yg#f2V_DVVA*%A6QXjf>31i@oo7pnU&eUzncV!<_eo+m0F?KJ^r#>-*A@ zZd^Crr4@M)rvE{Rbt+{ZT=F$L{KCvPYjb?`;N=@*`7H+cIn~-&i6rZ~#K>)uKa6tS zr_WDbm0El;HwJxlB3*?}kN7LB8d4&nE|j*Zgdcj5cfRR>Ai-GaLZ-v+F-DfX%aieJ zgiQP<{?C_YI!aV;9{Ef*S+(~jQCt3J+ua@`{BIV&+>{bF^j^xhYD~MWQ(zNe_2I$s zN+;5XKGq3rN=_G&4oT>{oW1yh*t{-Y+I+G`gzuSOric8EU4u(%wVei+zsrr)7Vhh^ zEBY3Eqb!de<|05hg~D!d_fHNW5~CAyHDf9Y8<<0_TY)rV!a;G8m;$l zFjYEjN5q^*EFl>pk$Q)>pta(x$G3d7i^sg?;P}t#D_fWkoVV$)eJT`X^W^w(r-5C? zs!_t`Z|`v8y&x-*&m?p{lnlBnp-2>@m1?_=EDf6s63Ql-muR znzXyU?4ypl*~d&{GG4OYNf_%=jgu^SEt!6Ly2uQ4SdE&z62W#Oap&a25kB3w<|e@= zF~(b5Gw2Y5MB>$(q*C4YP*Orqu@wt2SF8+VfHtV&P^^oe$# z)bPRimMzNlvr!D5DRO?C8^7dGD`8RS{4J9FIdqM7IgWLA4L`z9JK|3(y_IsIus1lR zwB%&F(5!bM0vhn7Ebe-Ym9#{Aj6OFO(zK8`OR0^|@V-gEFX2gVm|o-yKhmh-tg`Os z%ip&L96#&Ud$0Q@J!bYDch(W_-Qvy}&&Mk$Rbhcb@Ljb>C#&CyGskK@;2{k;{dwORmT)^zQ==?yE z!wi$4d2s#gL+w);XN(3Ioo6+o-Tjd@>M<<4cITVSqm@G$pvDd&jHipcBHb=fcSX3R%D%E|~eK1+R zXPV*!v~uomfE;}EWKdhKMHE<}Lsg@kwn+}D94}LENX(o`lI!;i{q*vxxU{8Rn^TK^ zO=_H1WUjT>j(c8n^$M(_o9XQ$_|IJ#gq*0_fImT9UfPmXY7FB8?m)Y{(^&FPR^5iK zpNMNU_iUT&uf5rM&pP4awIatslRkXRuy)F(BP(%ThMmqGw)iqnyLzXD%x$cf$E6)+ z+AR7V`(86&s3wo2OifL00e3TKK7!&}BoO+6Fm-`#Aqcr|>G=>P_x})0ta+PLYu@Iu zg1{GiF(BuNI2jUnKo~?R#)Ge3AL0Qr7n?$k;(#-Vl?`~_EdLj(rk2ARGNHevUyz(k zwp^|bD~`4;TErdAXKS26VpU+uj*!gHj$PQN7Cj(sc}YKj-6l`7=Jb|36rptlWeut7 zv-7Rl#>aAP+5~c^oAtz{m<3F)F@d04bw10n>MG0^9nQ$DmfNoXb@AXRHt@2#==u83 z60@BRgX%j8Iq9AGjmmxMmIW*g^5R`{U{Uz@cp2V+dG)5{Y$N!D5NSop%bsG8@~oNd z@gB2ve8b`rPRUoCJwQ|pW=r%Fjab>4{PXwPOoDi?kLnGPST|<`KIo2LIx^jOvL@-K z;zipDOI>Ft%+s|IaJs-|2vY)9jOf%>YdUQHVn4;YNeS5xjO}w;U_1>FDPb76k z*%iJ;^cFWy_eMTR;ij;17!N-jr|q)LeAG3&-pO-zw5z0#fef)?p^Y(*G7H}gbXN0v z&QI~*-LHP|;a1yXqZhu>MmORa1}=+A6`unqW8NR*vQ;R+eT(=4Vw~oFzPF4pVMFSl!kS$0>^> z$%mvD-(_e7WgvDPSxxJK0PQ%32+;BW69p)JVaJb|jte0&?9Gq$`lS)q9qstxII-~^ zvd|xkleIOOMWg4vR+e0{)IAqwglZ)hGG_as@%at8?Zu!9&dva(FI1tfvt2H#{rH%W zOr}nII0BuS_sVdXJt3#p()8&`I2T=XQd{ZmHj?_!6}qOah97of5-MXzx9$pWXkp+! z6%Me$O$rdsx8TgC$@gHt`-zgCC0n;-;xB#WJ8kHh-v*XQ`IBkK8uObNbc*r;7gQnK zUO1Nf*{5Y%`+XQMrEqd>HsRJI<(KCNQ@h6)&O=HnrlV0i@5sVjf83buhZI%jT-WcP z6|aQe!;()sJbGO4PV{CBVh1Ox_Bxz(R7;Z^>9YTbBaH;pv_0?S8NXQDg8 z>7U)Y0_o@Nf-a+Hv$(}>#tB-e#bX0y`YU^b2csSE{9j&&a6cOs?y&hnl*Xy!dnM`; zFFl@T3uJOT-G?6=m_^wZMBKJ*NKv&uJYIKfo9HKRyZZO@7s{3jCKXsjAV)3$IQe~> zy7c~ej|eSb9J$=uQJNkCeLW=e@ixru`0x?16~onaXbyTE$jjETMxb@P*;|rj0&XGQ zb%F_K#s|7!L$uV@)5R4ak(qiGze?aC{2%!l8XKTBh|;uB8uwN>sCQuf)$T*Ujo&@7 z%0&5sN$0p0mzV<3w%)Xk0kvP(fn!b!KQzezJoOw`hUKOfeV3T$%k#q}V(kUC){MNm zrb8`RhS}Xv^}rim{QWg^OWRem_hAv!!z~^i#WU^JDSA)sa0@YI*oV%@K@l~Y3M{>i z-@%JV**@(OPL<@9X@7Wff4{{gVkOI9-H)deXqOX>{ARv&ct{=CuOV~p$V}_GkP4wZ zql-a|yaWqoq8jWOayPAC9+*Bu6^y?Uh$Q@AoYZGYWi>mc9DtJ_2< zl9UR6)V_&2Y-Mulv96hc_mUF<=Vdy&!y3NU3GZ&2>v!bYb+r$a`s$HT?Jxo$oa1|s zyI8}!tn)+8IR!!Q<;!EWUzgewhtk=_jl)L0BTj zK3!&z$A1n>(z?$X^}f4jeqZ02UuyYB($#pm`v|(y)tn&Y>~`yC$%UAwDexIYEn<5Z z?6}NmRt&x7Ds@8V#=KXGo|erozTF=ePO@d^5h+;4JM~MZPY<7OtkOBtvgCOdM~gUt z(`PTq-3XWmr=s4wn9&FVH^X zsGR%Op5Hy@d+@Wk$tyC4ChgO13)6s=Rbr2}EeHZVr+!>}49GB~lt3LxIyjLkSzZSy zVZBxK>#gW=U)zGV*BJkF?MJ7C%r)b3=53ZB){==a4lr^Ws7sKKDV&X9z13^?AU+#h zotOnHZ^3Skk@O2arRGq}(p@Uj<#@M#wtrF?R6mAzDCl0$!NRJ}OK(`Z%>|k)e9A0& zDD=nqoL3-B3U5#oe~cf}R)_V8YX8`TfrvyR^HshX^ny5NW(3+r<3sCiy6xqV45l`R|&)Tmp? z$;_STAUE5z`2cM7Cfcaqm@6lwriSh=%VU^+{rm~>HP-mIfB%V#AOB>#Z<@Z2aRVU~ zkP4szjKl+Edc}vp5aTmIQTwRSq4(z?DN0I*$04Agf6B%mZ-$bVJM*hmd(;Ims&SBc zt|Tzaq8FxiA~r8R8!ql*f_lp_{`i2!{P;3G=WaI(3x0K%+nq>=0O7Wz`Fq}{Qw4$I z8lM5kX3|{b_gZvyc+F(t>L~_+P)*5f_wdqlkJ(X!AHH5Y6yjf5#Ce*}bh#K#LUiE1 z)O!BWyC{cSkTXdzqT)3_YJrcA7P}!fgqf_MSjQ9aAh{vPr+3W4N@~({m3lcov&o|usSa80U7tEgs#BhPL{d1H3 zQ4%v`7C9XvB&hnR(J#>tADhWm&Z2PW$b zr@Sg)V!P*GoYISz)!)KZjQwP=JkfOe#p~jQ(V{4Isinq_X;7QPOAE7n9%sR)K6S|K zW#ko(V;xP_5DbW#dr!)G`D64KMsCET)9I#oyg;m>+hFqjYDPU9O`E5R-dSu%V$KyN zpG;Mg51Jh=*6%O3)BG6a+cOb_*WM;J5bx``h=isSz3)qU2BUKz9wmO-w@`PQc=!3~JNi6pSRa{zn~r+U$vpc$csjBNsZRxG4ATB{hQ`M;~zHPu^7 zS1hWa9szO-zr}CdVX2>Nt zo;ZL~28tT6Lqy+CHXa5xKa#4@7mO#HMh?g%1D$y(oPGj=Z?**+R9Rr#(QLWgHSsx! zZzu1M^h9DamoBH%ld#I-K`e1@eGz?t1B57I&J;R6e0q~Hy~#Jj3$R0-7ltP)xtgO6$3s5t|7~8q@Y##=q)WS$0Vp3+?42$)FAd)}ZMu_+6nPI|v5o z;x(1#0Kr-lNrXNrE7(Gd(X{NWY_Ff)RthdXx`y7}9-<@rQ?>7Amk%!KypD^3~W>akLbdC-`o$k`^#xdmu_B z6iOa*+rli&W1%N;dYaU0@cywYRQ%`O+}NUJ!Nu$e5R#KrB$-n~rayfScZMQys5R%@ z))$5=^QRp?9N+II)i4*wSXR63TUw23f*JgBO`040=+enc_*<;E5*$p3r3Q+15-990 zd1p!uU$%H1%p|uhWYH(UW zpUQJ4yF3rTXERr0euzPxOHig^bB4~ziwhz>mm8|1MH|jK)CeW-rcJPeWOG`y*3ay@ zHq_8S@!gStoUIYqz%$RSkW%%(q-o$<+Rn8wQRwPH!hA^1k$0Gfeg{&L7u+%Aiof54 z@}VC!R;zh5q`)%q(iUBy8l{t4w<6DEqZCx$ru(xN0P*3*VZPIlkv3AZLABu)9G1lS zgkN2A7D|cI0v@i`F(So0pBvRI^w4x&;%F1`_OnI^DU-#-o3{cM&DFcvcL~V7_}PA` z#ZTMRZoM2W8ruy9W;wB72#LQ;)Wp9X&N2jd{n)B0U3=gxz?G}@pPx#fSXIB zRl%s*=8an>&~j+V*s{8GUJ{zGgAmk0^ULzm!uE`g0zl2i+YwSYM%-oQb=E4EbVXtL zyP#d?5eK|zKT*Vqg165=p_t;Zg>i1U!^BDtSWdpsr)C&40N~s&lRl zV#Anto|wsJW^huJ2(MlNkCiL;sfwnUxu(i@O)P2oiHqU%(fUHA4K(~#>)v+ z0dCuS%>b9$8|=}bDpI3UEm_qnL>eF?lUG-QuldZARXU$eXL?FW^M{@nRwrTU5f=j2 z3U9`id|ZX0+pHI7Qi8TZ%oq0hGe$0WSCrxwj z{%1z1G0yhO87n=R`bE)|(r{Fl6;chIWE7aJeBa$tH~LgiW3%>5r-SG8A}YMC`)IfTS|&j(YYWa3`21*N5H2H0Cl>w0UZ`B8x! zz42W-z=#2=K|LHo@s@$Hlro#rxjyrWuW#ik)0$5~xSC1@LCZ>hl}Z5Ugn9ZvS~4g{ zsBjL2`#@_>lIA#0si)L4MCMjOx4U(JEk%RamtaBr1D?Z=pQ^NE>MNfg09!45?sf3@ z8O@k4Z*KAdTM!)vKhUNoS_yG+!q?@i&tGPhEuR-|GrfE05s&VDf*$(CQ%V4tP6t^h zd{$7;u}*-Wb&G-!rQbh4t=S^h?KOGjqelbo2c@VL#*7C0=U&kCc&~WANQbI@vlP{+ zQBCQ>DrUG0Ia$Fj9{F=)G@PJyy07n_DKc zZ_#XKqzzxuWY=bsTT?C1tUaUq76hiB$LAX(ukT~x$|bp_4~cEd_FyuiX!gpxN{M~G zwl_K;x9dsMDZL2TnBEb=3*AQ>o;z5KSA61A2=TLX-}Tsbq{(G) zavnItaKQHM2&dSW*Pu3epw1#yrc`o%VDFfP^vlf?9=E->idcQ%Z~&Kfzq9Qyky4de z(YFEz#(4E795k3q%{mqlkSI!fU_2aNKi34FbhvX20IcBrXsVv$@}QIjPu^s<@yqIj ztGgp7A0ZLPz~vTR3f(9v?^2yybJgQZTMI7%aaFyUbe9pmNq?A3f8sn#i_8nHApP1# z#(@cd!+mGz(u9^goATo`zfJW3uno!Fe1HqWV887ZCyz@=&qDEI8hyuF5yd8g0F>`^ zyYaupcWTYltkCZwjuCVEz`SF+D-#OepT1Tm6m+*Hwq@Le>U2DF30jJU0Z2!r z07W!S4pf%>D|gi;+lr??D0j!_ZyJWo+PN@ZJ@YUgozFzVn6wwXy45Q&F5TZ5@75Rw zKigGef}@3SGm{D8`jGTVLe9*R8C}84KgOeTj?R6(n{xc_KGB8qIfenIKZ0bKwG3_L z_E3?sIBGmD^9H6XBy-!+snOS!j7Gfl7=8=pbfB)b@g+vhqjBxdnr;iEJ^>E zNO>2<8gsY*DpoZ{tZA3q*W02DH-Jx%zVw=@yH@_@Zd%- zan^e8|6eiUF)Z!0dD`X7xy2Q7jD4jGqmwg%Vj40*PP;F?q9I-w*aozEA|z0RADwzU zQBX7XXdwt`ZF)^mgHXUajs^6gPrKdUPmOko?{6$G^A?4J7=ic$Y-)Jk@fhWbB>Zw7 zz9OTS5h~l4C+?T+U@0>WLlRPXz|dD8c*xBOQ+Z&@J|N$O6gJ@-v-FFa9fumxgit)Op=KV~E27AG^x#qZ}N_&zDxl zF+hG%91X>`lh?xaCcF*hCy8CSfI~Z{{3c6}{zE~Ffrs2q%$}%4jiXDR-?xK6Jk%V` zzjfp3Ru-|Z{snU(446IrkZZeYe~pVut|gA5xxw4EqhNZuEc5x)!V&llt4o*$k~J!! zl?TDi!nN8vUqk4>(;O%HXL8}EfXtAiT@mC9H#Ft7kd@MUD=Vl1rMl68ZX%+dG&(}v zexnL83(|&2orVNz6q~s_W03!}t#)K+BkOx!?7$Ep1%~fAtL3-vAoNpg^XF(}fy!gw zR2@WGach;wCn5O1{cte-S?;%vry}5EyyD#%u~D3^AK@az zIfTzf3x|untc-gB{6zuj*R(?~97hY?r2-1O-5ww|`|*`tBBigVn*kSt(Yff*W_BO( zJH(M$?ZQvsSFV6OaJ*4@=siSNHiu8sFCf{&3u;W71@M8)qBOI3;@!?qq{psq6`HpT zFN?N+$7NpOPu_jg@rENb6uEmZL+fKSaa-BKsQ8!#0_c&DFza-h8_q9f(C*z(jEXKq@eUieh z!SRB6CxbUPSgif!2c89TA5P5NN{7+>;P{09C!eHo3@Jkl|7-~gey#a_I|@Dj41{4@ z&NHkPy}EMB^3vZZV}zqt@31Qa)^{&S@r zldw%VlZ3nD3(uF(2?jQzCg;s=YtZ8R(aw3-9=Bgq&cPx$T8vV>sb zv~^+f$M-J|6?^F`@-NTXH$X@7P8Njh48}7I9}r7zcpg)Rc_2N_$gM6h9jXHvzo%^g zSk6NtKyTPi;0UZqkhb3V?0p0GhqnXt=$ofu)RuAXM-%?e@1!mif-kOy5VC(N{0IxmDB$0&U!J?597SqfZigV`P8!n&7 zpu~?oXPhTJ2{v~Q=M_-SfVqSua{vbPEfzwG3E$&1E2V#Wut)UiSJF>Jk<~jyKvd*y zBGH0ikQZ(Q^}Ky|T&X@D?7`1G$2viLIs0k=Z(RT4twuW1?J*R2K_2QQ+Yr87+~Hn9 zEEtUfri9g2`(7~Rnwe*hEC7bQu{R&JZV!&Zw;ZdF?I?k7P{|FU;;I+~GHewQXu1Fq z!Jir}%yU3qpB%C7ot*<5bBS?tb4A9eH-$)@$>UL(<@6GTo4fn&oi=z_ui+K%Khyyf z@z98d*AA>Ljut6B!V^?dq>o>v{Q+6sqY0ZR7`WyA^o}0b!@`oRxwWQG|K4+Qm z1xHBgZrj3$Ngxg#d-i3k17PHq!uZjTFZ@Dc=SXxyMF%vYAu$n5PakB}L?Bk;zkk*~ zQ1jMH_#IjM3KrkytZ(2p#V4VR#jQw-7Q=t(v+N|o6rqV*sNU%VPCA%FBQZL_QJLSk z<11o&@v&iO-^4vu()nOXVDUo;c6SPR&O0WJMfTsv$B2u^eX?^Ke?jViSB8+kpGfnW zT>s^KV%NdRquzUdyi+*owMD>ns$M}k(+DVi`OUlFkZ8ZBS&UD%?G)2UlNK!i&i!kt z|8u{J2KkVky)g<0f#ewh8>mKC2?%BI&3!{JEBc*%VPMu>`+IsDx0}W-T8FgXSYUHv zXukr+EiKex_vO9_i^!|2UajYv@*l|P(x3Xw2my(yTL1S*Wf81Q3(2xQC~p)}0kv>j zhKj*Fycu%lx)xWw){r&!6q3o~;vUuc2K_ZUF{1OU&FKh*_|wU)etNJ*UOrfGO>!Y? zgyaknDbgzSKi`q{p7qU1bqVlK&yp{Fc`Z-bSOB^spR7ru^y3(NV*w+R#OSjx#gZUM zQ!n8hif~X$G0Lz5j`0O2FdCnc8ZHViOmda1G?g7vU=lI{QEnek^ibF$Ht-(zX|Weu zDDKv+@M-0_<}zA-19j%or^vJQihl(;{$R%bCiWKxMk})TN~TU&e!I_%NpLeP^D1c( zaj}~`c0BK6#tpfrmUfOupY=l3ngC>!bZ*r8Y$hyrpANET{IG=xFCU2bgdg;ExC2Pf zQ#9d6FkcsCIL&KgZKv8idpu_uGM+(zDH?ZyV(V~AR$T650xkso_d9skC(7Y#^A5Q~ zj)k(>OgY}4ie8J+{CQubb@djJPHOXeW=;9v-vj~iC%K%WzonUFAdwo2A>f>--NL}0 zioJqSZUnGDkI&c0X7WTbn*48eeX+^-ScXuCBM`NUzTl<6Xldx@2q0V+Bn#c6oW8X; z6@&e*bXFdj1pq6r{&Gzii~^AkBpm_Xhb$1~JdD{X_LFM-v$P;J{75^m>HNh9lT8TK z4SD)=Ky@ER7Nf82xJwUc+3aGSIO^>_0tg~{dfh}Bm_?0bHT2p8L=TlD7oDLMq$hMI z>VEGaT{of&hx4ILDAL@o6qQjekVV;K-?pAOY~V<(G3VYNP$5(U>K>CzJ%Cg&9(?xE z*SATY36ldAfEJfN>{E?ALfLx|pfy^%r2tzEIvg^(R|<)=G?V1>1;7F&kRVB%Twwnl z5G@0iyr&VE#-mVgK@2u4I6mMioYA3{l+&b*Fl)I`TBId#FMl+O6?3~Rp=jJ1LY;{P zBpc$zrnt=hu0Pu0M!ih_@*P$sO|>*d4m#Q71Xv6jF)jvnjXPjxIWM^}XX!n~ABOTu z3yUs4ByUo~WD#vF+;e%-mtnYHEY9UU=l!!Lb|urzJ39_2DvgPz9gHcXKTtrVG&R!J z014xy;=nYstURc95>6{5;B-`LkC!H#1b`I@)i6@oK^1#5OXtsDSb$W3n6aH*{Uyg% z$dIs{O__N2Na`g+ClLyuCR z%oCsA0m*=m+O&r?K0`Di?C$cKSI;*8o=%R5+&KPKF(<@Behs_U49OX^m9<$_;~fbc zrtof`|LC9W%WwZ1w%Tb-uDn&{il!%mse7UYO#oA0fi-FiPdz*X6!Kv_h39J943y9Y z+Ba5oT*U^C^E@O+*=Qu&cPGv-+Z_bs%$-I*#G2hAfr}pwQNEppJoVRppWWzy{!sfS z>l&u>I1p+u@n?@LjdncEqPzAn?ATV(R{(0c@iGa^i4GqD3r7I3ZtMpAIR}-G=39@B zWABz7vIE~%0F^gA)>A@;`>L^lNW#>na4^NZF-_Az5a=OGKVTvwpZ0ha4VYSex8<$d zDPM1rMe#Kpn5f*=Ve71tQx^HK%mZg4#a%M%D>5hu5d!M*QV~=LzI{%e z1*mwz`@tMhuq2_97ofmEfOOYIAJI?#bkXHk59${ZrOWm-SVNeNFQ|zW5(J@9jWO2C z*UogbfQoAO(IXn(3c)*!9WOsKEBD!)0tvPJ(IN<n5)#w_P zhhjAs#=;g+lW@);9IaT3J0O>8kPVB{`5|tk@NP%MRc-o#zHNdJA9VxdsjsTzrAVyv z5Sil~MFMgq@tso_LVc$@4_$+*8^@zV?RY}~`$mC>8DSfaa8IE-1yRux4kXypc~Wa) z2)$UJGwKn>7>Snt{D*C6t(0Wx%`OSq_;`?pT|2<;{OYboWZZXu=w#&a+%-p8Bz&Q} zvv{`K!~80X^Th)m2vQz@>X;#V$7yYF6KM|59LtFaC%3~>~pivuLAL+C-u!BSO3*0=?LGROT^6KULDz_UR z1|XbF$DXi)@P*px)IKse+HFV2eR7Xn)JHV7?>%4Hl(6Qw^i#X8>(0+I;TRWI$I;H` zmMr(|#(^!1f($`2{`?R{=&do>zjKTS&srkxZ2$Ntb?^DRnrZ%J{xk?v7>y0u8VA*N zeNWyWd{6!^t&yuIUL*b$0uy$fbGiq)kthINOuQuD_`nj29c#*$0)A7dCs-IU&7s2k zrIx1dws|dl3t4XAJ(;4y4~&9o{dF~oX{{uOdy5}RJw5hw@Ld0`Qf&w(R*6*K;v%n$ zX_!DFG{vGeHh)Gg!3s4wFR~sDEV#V9vSm^j8ZRE}K)s`8`7!-oNR0_exKELp(wOcI z$e6ns)IKx!{S9jk*sHVsM>&`<-+{D>G_Q$t`^32OjW01}HGqD-bBc2~T3+3}i@vqK z^a0O8m<0D#rKnXgwa8RHysl5F4P_MGUsBX!hMYd%Q9gJ{hN|HVfQ~O2b!%rAQCHnT zd#>L~26+M_9h55{_jfeF6y@px8B?qdQ`9)5KJB6rB3J*YRaCQZWUWy}x#zY-218v% zFBpql=gU;pyKzViKxnSDxTvnM^)9x`BVWqkA)s1I@p2gjF&ch0BI9(uA>?y8KzTN2H%!O5Cg(jwrKzO6E#9N(iQefse3`(R#T264BE<{iSijpeWmycm(Mpy zoJ`1krf~YOB?T>92Zwjsan~pblD5q%p1A&W>6D&rFHzESGbn2p-X<}nQ9qBQgSLu~ z9J){hfqf)WKl#xM7C?@B);6B{napPHWwB?B2jm)$#5x5GBN8`$E#cTzcb0Z={n6({ zLjrz>W`IuOLHk9+MsizEqv7=w+NipYLsTqVJ0ov}Utt>!2F`sTB1IU?KLupTBU9gR zE9~Y6-TW?g8D<^@)zF8&Zyqpv0QOg^F38TwX$B$55s30M@L;35__sWb*Qxi1ksg?= zgC*t8kSJ==nFR*TX395A4^^r2=0Vk+T;DN##Kmu|NoV%!8j zYXMT-AYd=45!&uYx((l^&u1k8rHt}?^%npmNk1|dC$dLi{)`XcdL8c$-4%%8Yao2G zzv2YWlewfd%5e^%4okm1`*I^izsR}U+g(T0vffuwH&1?H4BQXi+nrxDL%_I#2!ZNZ zVxFZ1mi39vLlAGjjNbm#X)Ab_vgmJRbA8N$_Ft=_9T-+B2#lvoGTj@mf)PDxaThES zXaBRhigfqQhJ5{S+})>3jzPj`nOJP#<7Oz`Q{=a8Kb$l?MS1X9IdUo#Zl88gHaLJt1P+AgbLNBR>Bgl1^WCDOhm_ zZRg9p#H!ZsIa-o^Q);ZvaD4V!EoJPRec%#%W#oDP$z0tR%CD44jf!e}IAZO#mS; z`gLpX=UtmmlnW}3L2^h?($YfzShlDB(Xe+R0(N9QZou$S$OB<#*I~}jRIoy!Oq%xq%sy^(V-jdzV0Je*i`%2FApVS z6vA|;s_R&fCfv$bVD-#161sQRnur`KcGB|Nf&?^VdZbQbZp7w4OAhr`S7JVHrU#^Q z1gppDF=OBjkX%#nFUmEY)}({f&Lg*pxBE+IhKau;O)B2a@7*aF$sSo6KZ6jD@v&Nv z`b|jBA#tvyv<$DXhMgM%Tn!G{2YFxaZ5|xGZ}`+;YXiYsCx#OL2bB|@iE{K{RKs%L zL*6&U;FNO^!9M5#J7eXd+`f|jC{qCG;Fu8|$$lAJ!KVdvCiSg^MZLX8@t(}vJUshNf=D~47kc|PSw17Z2p?`R0;RP{lcJ~rhQ>o zgQTv_>7Xx%Aunyo&;p1IWpZ-u`jATqa2Sjn34B9n@7gL^fWwOdu%v`slu;lR?6_yzFtHiL0To zkJ)0o)qA8uWhA2dJXL78$c0#>PCSHBMx(wgQ1{{WMV|BT6x7@UniE47oCBMN%2p?cADdU_?nlPd7CEB7y#>HO@p!5GduFh z)I#ygeDVXk-g_G+)jgwMo`cBAwd{igX_v?N_LyyR`cR`?9PM#by7+5+CHIotY_BqT zTb-{Y1?MGYC;+K}&KJ4|b9V~reI>mYI(n+1C82LI)xluN6VDfb&vLYDg@W)q?Lp_x z@kWN0jo~o z`dxpRBMtdBc)jov*fEuwsg~r*vr9eC(;mM8qwWL=dKE10mR-0JXHapWZ2%1#+axVm zO2321=6vTPro)!Eth$Tc>bsm+Mz%>~^89>-mul7W>Yl84aLg^pGNBpi{@B|q;#_mH zdlTUd36WN4L5LZ{%mt0ApWkERsjk+O-v-VkW{i4pfyXXTP(#Kcv<%~1Pw2a4?U