pap-all-projectPAP 管理平臺(tái)
針對參加工作以來遇到的業(yè)務(wù)問題,搭建一套自認(rèn)為較獨(dú)立的業(yè)務(wù)模塊,命名為PAP 快速開發(fā)框架。
技術(shù)棧: 技術(shù)棧為 Spring Boot 2.x 配套 Spring Cloud、 Mybatis、 Redis 、RabbitMQ、Activiti
基礎(chǔ)模塊:
1、PAP-POM
1、定義一個(gè)Maven項(xiàng)目,packaging設(shè)定為pom,用來約定依賴組件的版本號(hào),保證所有 PAP 項(xiàng)目,所依賴的外部組件的版本號(hào)保持相同,防止不必要的組件間調(diào)用異常。
2、由于目前的Maven項(xiàng)目中,parent 父節(jié)點(diǎn)只能有一個(gè),為了防止 sprint-boot 項(xiàng)目嘗試定義多個(gè) parent 節(jié)點(diǎn),參照 spring boot 多個(gè)parent 解決。
那么業(yè)務(wù)模塊引用 PAP-POM 就可以采取如下方式
<!-- 自定義統(tǒng)一依賴版本的基礎(chǔ)項(xiàng)目,其他的項(xiàng)目在引用依賴的時(shí)候直接繼承該項(xiàng)目即可,這樣使用的依賴版本就能保持一致性。 -->
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>com.pap</groupId>
<artifactId>pap-pom</artifactId>
<version>0.0.1-RELEASES</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、 PAP-OBJ PAP-BASE
1、一些 POJO 類、通用的 BASE基類、Util方法;
2、PAP-BASE 中,含有一些自定義的Mybatis Generator Plugin,用來方便的進(jìn)行代碼生成操作(PAP-CODE-GENERATOR)。
擴(kuò)展mybatis-generator-plugin查看
mybatis-genarator 自定義插件
mybatis-generator 自定義注釋
mybatis-generator 基類繼承
3、 PAP-CODE-GENERATOR
1、此代碼生成器分為兩部分,一個(gè)是基于 Mybatis-generator-plugin 插件的代碼生成器,一個(gè)是基于 freemarker 的代碼生成器,需要修改 mybatis-generator.properties 文件的參數(shù)
1.1、修改數(shù)據(jù)源: classPath driverClass connectionURL userId password
1.2、修改文件路徑: targetProject targetPackageBase 工作空間所屬路徑與package路徑
1.3、表名: tableName domainObjectName alias 表名、映射的實(shí)體類名稱、表的別名(防止多張表的同名列)
4、 PAP-CALCULATE
1、JAVA 的四則運(yùn)算計(jì)算器,解決 Excel 的公式,自定義的四則運(yùn)算公式
java 四則運(yùn)算,并可完成 自定義函數(shù) 表達(dá)式 功能
JAVA 計(jì)算器 自定義公式 解決EXCEL計(jì)算公式問題
自定義基礎(chǔ)模塊: 自定義starter
1、 pap-bean-spring-boot-starter
1、分布式主鍵生成,使用 twitter 的 IDWorker 生成器;
2、spring自定義參數(shù)解析器,將 request.header 里面的用戶數(shù)據(jù)進(jìn)行解析成對象,方便controller使用;
2、pap-logback-operdb-spring-boot-starter
1、自定義操作日志, 將用戶的操作記錄異步持久化數(shù)據(jù)庫中;
2、使用 Logback Interceptor, 將數(shù)據(jù)按需異步持久化,同時(shí)擴(kuò)展Logback 默認(rèn)的4個(gè)字段為 32個(gè),方便參數(shù)處理(源碼Gitee);
3、pap-sequence-starter
1、ERP 項(xiàng)目中,會(huì)有大量的 流水號(hào)生成的功能,將此處的功能進(jìn)行抽離;
2、支持 DB(樂觀鎖) 或者 Redis(原子性incr) 兩種方式,按需引入(詳見ReadME.md 文件);
業(yè)務(wù)基礎(chǔ)組件:
1、PAP-ACTIVITIY
1、工作流,詳見ReadME.md
流程在線可視化定義、初始化任務(wù)、認(rèn)領(lǐng)任務(wù)、我的申請、我的代辦、批注歷史、任務(wù)審批、審批拒絕;
2、PAP-RabbitMQ
1、消息中間件,注意此處可以通過消息中間件解決分布式事務(wù)最終一致性的問題(AOP+守護(hù)進(jìn)程);
2、事務(wù)消息
3、死信隊(duì)列,郵件發(fā)送;
3、PAP-UPLOAD
1、統(tǒng)一文件上傳: 注意修改臨時(shí)上傳文件,防止操作系統(tǒng)將臨時(shí)文件夾清空造成業(yè)務(wù)中斷;
4、PAP-SPRING-BOOT-SPI-DEMO
1、SPI擴(kuò)展點(diǎn): SPI解決Saas的定制化服務(wù)問題;
5、PAP-SPRING-BOOT-ADMIN
1、軟件監(jiān)控: 解決服務(wù)可用性監(jiān)控;
業(yè)務(wù)組件:
1、PAP-GATEWAY、 PAP-UUA、 JWT
1、使用 spring-cloud-starter-gateway 定義網(wǎng)關(guān),同時(shí)使用 spring-boot-starter-security 進(jìn)行鑒權(quán)(使用 JWT 進(jìn)行登錄用戶信息維護(hù));
2、定義 PAP-UUA 工程,此工程封裝 JWT 操作(登錄獲取Token、解析Token、刷新Token), gateway網(wǎng)關(guān)透傳uua項(xiàng)目,不做權(quán)限驗(yàn)證;
3、具體的業(yè)務(wù)子系統(tǒng)需要進(jìn)行鑒權(quán)操作,則通過 JWT 整合 security 進(jìn)行登錄用戶鑒權(quán)處理。 Security認(rèn)證管理器JWT.
