fanxl12 / priest

dubbo mybatis springboot base soa rest api framework with customer code generator

Home Page:http://xiaogang.org.cn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

priest

dubbo mybatis springboot base soa rest api framework with customer code generator

前言

做过几个软件项目开发的人,可能或多或少都会发现,除去项目本身业务细节的区别,项目与项目之间还是有大量的功能重复, 如用户中心、接口调用权限认证、支付中心、账户钱包、聊天消息、管理后台的权限和菜单管理,几乎是每个项目会用到的基础模 块,本项目旨在以priest 项目 (priest 项目是一个以 incubator-dubbo - Spring Boot - Mybatis3 为基础的SOA开源开发框架) 为基础,将常用的通用非业务模块独立组件化,让新的业务项目研发如积木组装一样简单,让开发人员的全部放到业务细节的快速 实现上,让项目创业的人员配置简单化,成本最小化。

项目介绍

priest项目基于springboot+dubbo+mybatis的分布式敏捷开发框架,将 JSR303 hibernate-validate 验证体系完美融合dubbo服务框架。并以此为基础开发了maven-code-generator 插件,让研发人员从重复的增删改查工作中彻底解脱。

本项目为后续开源的所有项目的基石项目,后续计划陆续的开源项目将会有 用户中心 支付中心 敬请期待!

更新日志

2019-04-17

  • 用户模块微信OAuth2登录支持

  • 支付模块用户账户支持

2019-04-09

  • 增加了用户模块

    1. 短信注册
    2. 用户信息补充
    3. 获取用户信息
    4. restApi 接口调用认证
    5. token 过期刷新
    6. 用户主动登出
  • 增加后台管理模块

    1. 权限管理
    2. 菜单管理
    3. 管理员管理
    4. 代码生成demo
  • 代码生成插件

    1. 后台管理jsp代码生成支持
    2. 代码生成 list attribute 标签支持

项目计划

模块 功能描述 完成度
priest-pay 支付宝支付  🔘
priest-pay 微信支付  🔘
priest-pay 用户账户  🔘
dubbo-extend 改为dubbo 原生JSR303 参数验证  🔘
priest-user token 生成  ✔️
priest-user restApi token 验证  ✔️
priest-generator 管理后台页面自动生成  ✔️

组织结构

├── dubbo
│   ├── assembly     --dubbo 打包相关配置
│   └── bin          --dubbo 启动脚本
├── dubbo-extend     --dubbo 扩展支持dubbo接口参数校验
├── plugin-test      --代码生成插件测试项目
├── priest-admin     --管理后台项目
│   ├── priest-admin-api     --管理后台api项目
│   ├── priest-admin-common  --管理后台公用模块
│   ├── priest-admin-dao     --管理后台数据库访问层
│   ├── priest-admin-http    --管理后台WEB界面
│   └── priest-admin-service --管理后台dubbo服务
├── priest-common            --priest 项目公用模块
├── priest-common-web        --priest 项目公用WEB模块
├── priest-demo              --priest 服务化样例项目
│   ├── priest-demo-api      --priest 服务化样例api项目
│   ├── priest-demo-dao      --priest 服务化样例dao项目
│   ├── priest-demo-http     --priest 服务化样例http项目
│   └── priest-demo-service  --priest 服务化样例dubbo服务项目
├── priest-generator         --priest 代码生成插件项目
├── priest-user              --用户项目
│   ├── priest-user-api      --用户api项目
│   ├── priest-user-dao		 --用户数据库访问层
│   ├── priest-user-http     --用户WEB接口
│   ├── priest-user-service  --用户dubbo服务
│   └── priest-user-token    --用户token生成模块
└── wiki_images              --wiki 引用图片
  

Getting Started


项目依赖

  1. mysql 数据库
  2. zookeeper 注册服务
  3. maven
  4. jdk 1.8+

项目编译

  1. 进入项目根目录

  2. 打开项目 priest-demo/priest-demo-dao/src/main/resources/demo.sql 建立创建测试数据库及表

  3. 修改 priest-demo/priest-demo-dao/pom.xml develop profile 关于jdbc的配置见下图

  4. 修改 根目录pom.xml develop profile 关于zookeeper配置见下图

  5. 进入项目根目录

  6. mvn clean install -Pdevelop

项目运行

  1. dubbo service 启动

运行 priest-demo/priest-demo-service/src/test/java/com/little/g/demo/TestDubbo.java main

  1. http 启动

    • 进入priest-demo/priest-demo-http 项目目录
    • 执行 mvn spring-boot:run ,观察控制台日志输出,出现如下日志,便是启动成功了。

  2. 接口访问测试

curl http://127.0.0.1:8888/user/test

开发流程

数据库建表

本例以order表为例子建表语句如下:

	
CREATE TABLE `order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `uid` int(11) DEFAULT NULL COMMENT '用户ID',
  `money` bigint(15) DEFAULT NULL COMMENT '金额',
  `create_time` bigint(15) DEFAULT NULL COMMENT '创建时间',
  `status` tinyint(4) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
	

dao 生成

  1. 打开priest-demo/priest-demo-dao/src/test/resources/generatorConfig.xml追加如下配置
<table tableName="order" delimitIdentifiers="true" >
            <generatedKey column="id"  sqlStatement="JDBC" />
</table>     
  1. 调用priest-demo-dao的 mybatis-generator插件的 mybatis-generator:generate 任务,执行结果如下:

  2. 关于mybatis-generator的详细配置和文档可参见 MyBatis Generator

api 生成

  1. 拷贝 com.little.g.demo.model.Order 至 priest-demo-api 项目的 com.little.g.demo.api.dto 重命名为 OrderDTO
  2. 打开priest-demo/priest-demo-api/src/main/conf/GenerateConfig.xml 追加如下配置
<generateFile packagePath="/com/little/g/demo/api" templateName="Service.tpl" fileName="OrderService.java">
        <property name="entityName" value="Order" />
</generateFile>

  1. 调用priest-demo-api的 generator插件的 generator:generate 任务,执行结果如下:

  2. 关于generator 插件的详细配置和文档可参见

service 生成

  1. 打开priest-demo/priest-demo-service/src/main/conf/GenerateConfig.xml 追加如下配置
<generateFile packagePath="/com/little/g/demo/service" templateName="ServiceImpl.tpl" fileName="OrderServiceImpl.java">
        <property name="entityName" value="Order" />
</generateFile>

  1. 调用priest-demo-service的 generator插件的 generator:generate 任务,执行结果如下:

  2. priest-demo-service dubbo-config.xml 追加dubbo service 接口暴露

    <dubbo:service interface="com.little.g.demo.api.OrderService" ref="orderService"/>

  3. 关于generator 插件的详细配置和文档可参见 priest generator

http 生成

  1. 打开priest-demo/priest-demo-http/src/main/conf/GenerateConfig.xml 追加如下配置
<generateFile packagePath="/com/little/g/demo/web" templateName="Controller.tpl" fileName="OrderController.java">
        <property name="entityName" value="Order" />
</generateFile>

  1. 调用priest-demo-http的 generator插件的 generator:generate 任务,执行结果如下:

  2. priest-demo-http dubbo-consume.xml 追加dubbo service 引用

    <dubbo:reference id="orderService" interface="com.little.g.demo.api.OrderService" />

  3. 关于generator 插件的详细配置和文档可参见 priest generator

管理后台代码生成

管理后台的dao、api和service 的生成与restApi的生成逻辑本质没有太大区别,只是在接口原有逻辑的基础上增加了分页逻辑,对于既有接口逻辑又有后台管理的模块,可以采用管理后台的 api、service模板 进行生成,下面只单独列出 admin 管理页面的代码生成配置:

  1. 打开priest-admin/priest-admin-http/src/main/conf/GenerateConfig.xml 追加如下配置

注意 :默认的web文件生成路径位于 WEB-INF/jsp+${webPath} 若要修改web文件生成路径,直接修改插件的webSource配置


<!-- Controller 生成配置 -->
<generateFile packagePath="/com/little/g/admin/web/controllers/test" templateName="Controller.tpl" fileName="BookController.java">
        <property name="packageName" value="com.little.g.admin.web.controllers.test" />
        <property name="basePackage" value="com.little.g.admin" />
        <property name="entityName" value="Book" />
        <property name="module" value="BOOK" />
        <property name="uri" value="/book" />
    </generateFile>
    
<!-- list.jsp 生成配置 -->
<generateFile webPath="/book" templateName="list.tpl" fileName="book-list.jsp">
        <property name="uri" value="/book" />
        <property name="module" value="图书" />
        <list name="attributes">
            <attribute name="name" required="true" comment="书名" />
            <attribute name="price" required="false" comment="价格" />
            <attribute name="author" required="false" comment="作者" />
            <attribute name="publisher" required="false" comment="出版商" />
        </list>
    </generateFile>

<!-- edit.jsp 生成配置 -->
<generateFile webPath="/book" templateName="edit.tpl" fileName="book-edit.jsp">
        <property name="uri" value="/book" />
        <property name="paramName" value="book" />
        <property name="module" value="图书" />
        <list name="attributes">
            <attribute name="name" required="true" comment="书名" />
            <attribute name="price" required="false" comment="价格" />
            <attribute name="author" required="false" comment="作者" />
            <attribute name="publisher" required="false" comment="出版商" />
        </list>
    </generateFile>
  1. 调用priest-admin-http的 generator插件的 generator:generate 任务,执行结果如下:

  2. priest-admin-http dubbo-consume.xml 追加dubbo service 引用

    <dubbo:reference id="orderService" interface="com.little.g.demo.api.BookService" />

  3. 访问admin项目增加菜单

  1. admin 生成界面效果截图

列表页:

修改页:

  1. 关于generator 插件的详细配置和文档可参见 priest generator

批量生成脚本

您也可以在配置完成后,直接执行批量生成脚本,完成上述所有步骤 脚本位于 priest-demo 根目录

	sh	code_generate.sh
	

最后项目重新编译运行,新开发的接口就可以测试了

About

dubbo mybatis springboot base soa rest api framework with customer code generator

http://xiaogang.org.cn

License:Apache License 2.0


Languages

Language:JavaScript 80.9%Language:Java 9.9%Language:CSS 6.2%Language:HTML 2.0%Language:Smarty 0.4%Language:Visual Basic 0.2%Language:Shell 0.2%Language:ASP 0.1%Language:C# 0.0%Language:PHP 0.0%Language:FreeMarker 0.0%