1 Star 0 Fork 0

liuyang / plant

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

zheng

License PRs Welcome GitHub forks

交流QQ群:133107819🈵、284280411🈵、528049386♨️(群内含各种工具和文档下载)

前言

  zheng项目创建于2016年10月4日,正在慢慢成长中,目的不仅仅是一个开发架构,而是努力打造一套从 前端UI - 基础框架 - 分布式架构 - 开源项目 - 持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。

项目介绍

  基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构:内容管理系统(门户、博客、论坛、问答等)、统一支付中心(微信、支付宝、在线网银等)、用户权限管理系统(RBAC细粒度用户权限、统一后台、单点登录、会话管理)、微信管理系统、第三方登录系统、会员系统、存储系统等,努力为中小型企业打造全方位J2EE企业级开发解决方案。

组织结构

zheng
├── zheng-common -- SSM框架公共模块
├── zheng-ui -- 后台管理系统UI模板(基于bootstrap实现的响应式Material Design风格的通用后台管理系统模板)[端口:1000]
├── zheng-upms -- 用户权限管理系统(网关)
|    ├── zheng-upms-common -- upms系统公共模块
|    ├── zheng-upms-dao -- MyBatisGenerator代码生成模块,无需开发
|    ├── zheng-upms-client -- 集成upms依赖包,提供单点认证、授权、统一会话管理
|    ├── zheng-upms-rpc-api -- rpc接口包
|    ├── zheng-upms-rpc-service -- rpc服务提供者
|    └── zheng-upms-server -- 用户权限系统及SSO服务端[端口:1111]
├── zheng-cms -- 内容管理系统
|    ├── zheng-cms-common -- cms系统公共模块
|    ├── zheng-cms-dao -- MyBatisGenerator代码生成模块,无需开发
|    ├── zheng-cms-rpc-api -- rpc接口包
|    ├── zheng-cms-rpc-service -- rpc服务提供者
|    ├── zheng-cms-search -- 搜索服务[端口:2221]
|    ├── zheng-cms-admin -- 后台管理[端口:2222]
|    ├── zheng-cms-job -- 消息队列、任务调度等[端口:2223]
|    └── zheng-cms-web -- 网站前台[端口:2224]
├── zheng-pay -- 支付系统
|    ├── zheng-pay-dao -- MyBatisGenerator代码生成模块,无需开发
|    ├── zheng-pay-service -- 业务逻辑
|    ├── zheng-pay-sdk -- 开发工具包
|    ├── zheng-pay-admin -- 后台管理[端口:3331]
|    └── zheng-pay-web -- 演示示例[端口:3332]
├── zheng-ucenter -- 用户系统(包括第三方登录)
|    ├── zheng-ucenter-dao -- MyBatisGenerator代码生成模块,无需开发
|    ├── zheng-ucenter-service -- 业务逻辑
|    └── zheng-ucenter-home -- 网站前台[端口:4441]
├── zheng-wechat -- 微信系统
|    ├── zheng-wechat-mp -- 微信公众号管理系统
|    |    ├── zheng-wechat-mp-dao -- MyBatisGenerator代码生成模块,无需开发
|    |    ├── zheng-wechat-mp-service -- 业务逻辑
|    |    └── zheng-wechat-mp-admin -- 后台管理[端口:5551]
|    └── zheng-ucenter-app -- 微信小程序后台
├── zheng-api -- API接口总线系统
|    ├── zheng-api-common -- api系统公共模块
|    ├── zheng-api-rpc-api -- rpc接口包
|    ├── zheng-api-rpc-service -- rpc服务提供者
|    └── zheng-api-server -- api系统服务端[端口:6666]
├── zheng-oss -- 对象存储系统
|    ├── zheng-oss-sdk -- 开发工具包
|    └── zheng-oss-web -- 管理界面[端口:7771]
├── zheng-shop -- 电子商务系统
├── zheng-im -- 即时通讯系统
├── zheng-oa -- 办公自动化系统
├── zheng-eoms -- 运维系统
└── zheng-demo -- 示例模块(包含一些示例代码等)

技术选型

后端技术:

  • Spring Framework
  • SpringMVC: MVC框架
  • Spring secutity|Apache Shiro: 安全框架
  • Spring session: 分布式Session管理
  • MyBatis: ORM框架
  • MyBatis Generator: 代码生成
  • Druid: 数据库连接池
  • FluentValidator: 校验框架 https://github.com/neoremind/fluent-validator
  • Jsp|Velocity|Thymeleaf: 模板引擎
  • ZooKeeper: 分布式协调服务
  • Dubbo: 分布式服务框架
  • TBSchedule|elastic-job: 分布式调度框架
  • Redis: 分布式缓存数据库
  • Solr|Elasticsearch: 分布式全文搜索引擎
  • Quartz: 作业调度框架
  • Ehcache: 进程内缓存框架
  • ActiveMQ: 消息队列
  • JStorm: 实时流式计算框架
  • FastDFS: 分布式文件系统
  • Log4J: 日志管理
  • Swagger2: 接口测试框架
  • sequence: 分布式高效ID生产 http://git.oschina.net/yu120/sequence
  • AliOSS|Qiniu|QcloudCOS: 云存储
  • Protobuf|json: 数据传输
  • Jenkins: 持续集成工具
  • Maven: 项目构建管理

前端技术:

架构图

架构图

模块依赖

模块依赖

模块介绍

zheng-common

Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。

zheng-ui

基于bootstrap实现的响应式Material Design风格的通用后台管理系统,zheng项目所有系统都是使用该模块界面作为前端展示。

zheng-upms

本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。

zheng-oss

文件存储系统,提供四种方案:

  • 阿里云 OSS
  • 腾讯云 COS
  • 七牛云
  • 本地分布式存储

zheng-api

接口总线系统,对外暴露统一规范的接口,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,示例图:

API网关

zheng-cms

内容管理系统:支持多标签、多类目、强大评论的内容管理,有基本单页展示,菜单管理,系统设置等功能。

zheng-pay

  • 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。

  • 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统、系统监控。

zheng-ucenter

通用用户管理系统, 实现最常用的用户注册、登录、资料管理、个人中心、第三方登录等基本需求,支持扩展二次开发。

zheng-wechat-mp

微信公众号管理平台,除实现官网后台自动回复、菜单管理、素材管理、用户管理、消息群发等基础功能外,还有二维码推广、营销活动、微网站、会员卡、优惠券等。

zheng-ucenter-app

微信小程序后台

zheng-shop

电子商务系统

zheng-im

即时通讯系统

zheng-oa

办公自动化系统

zheng-eoms

运维系统

环境搭建

开发工具:

  • MySql: 数据库
  • jetty: 开发服务器
  • Tomcat: 应用服务器
  • SVN|Git: 版本管理
  • Nginx: 反向代理服务器
  • Varnish: HTTP加速器
  • IntelliJ IDEA: 开发IDE
  • PowerDesigner: 建模工具
  • Navicat for MySQL: 数据库客户端

开发环境:

  • Jdk7
  • Mysql5.5
  • Redis
  • Zookeeper
  • ActiveMQ
  • Dubbo-admin

工具安装

环境搭建和系统部署文档(作者:小兵)

资源下载

开发指南:

  • 1、本机安装Jdk7、Mysql、Redis、Zookeeper、ActiveMQ并启动相关服务,使用默认配置默认端口即可
  • 2、克隆源代码到本地并打开,推荐使用IntelliJ IDEA,本地编译并安装到本地maven仓库

修改本地Host

  • 127.0.0.1 ui.zhangshuzheng.cn
  • 127.0.0.1 upms.zhangshuzheng.cn
  • 127.0.0.1 cms.zhangshuzheng.cn
  • 127.0.0.1 pay.zhangshuzheng.cn
  • 127.0.0.1 ucenter.zhangshuzheng.cn
  • 127.0.0.1 wechat.zhangshuzheng.cn
  • 127.0.0.1 api.zhangshuzheng.cn
  • 127.0.0.1 oss.zhangshuzheng.cn

编译流程

zheng-ui、zheng-common => zheng-upms => 其他

启动顺序

  • 新建zheng数据库,导入project-bootstrap文件夹下的zheng-xxx.sql(使用最新版)

  • 修改各dao模块和rpc-service模块的redis.properties、jdbc.properties、generator.properties数据库连接等配置信息,其中master.redis.password、master.jdbc.password、slave.jdbc.password、generator.jdbc.password密码值使用了AES加密,请使用com.zheng.common.util.AESUtil工具类修改这些值

  • 首先启动 zheng-upms-rpc-service(直接运行src目录下的ZhengUpmsRpcServiceApplication#main方法启动) => zheng-upms-server(jetty),然后按需启动对应子系统xxx的zheng-xxx-rpc-service(main方法) => zheng-xxx-webapp(jetty)

rpc-service启动演示

web启动演示

开发演示

  • 创建数据表(建议使用PowerDesigner)

  • 直接运行对应项目dao模块中的generator.main(),可自动生成单表的CRUD功能和对应的model、example、mapper、service代码

    • 生成的model和example均已实现Serializable接口,支持分布式
    • 生成的mapper.xml的selectByExample方法自动包含分页参数offset和limit
    • 已包含抽象类BaseServiceImpl,只需要继承抽象类并传入泛型参数,即可默认实现mapper接口所有方法,特殊需求直接扩展即可
    • BaseServiceImpl方法根据读写操作自动切换主从数据源,继承的扩展接口,可手动通过DynamicDataSource.setDataSource(DataSourceEnum.XXX.getName())指定数据源
  • 启动流程:优先rcp-service服务提供者,再启动其他webapp

  • 扩展流程:可扩展和拆分rpc-api和rpc-service模块,可按微服务拆分或场景拆分

框架规范约定

约定优于配置(convention over configuration),此框架约定了很多编程规范,下面一一列举:

  • service类,需要在叫名service的包下,并以Service结尾,如CmsArticleServiceImpl

  • controller类,需要在以controller结尾的包下,类名以Controller结尾,如CmsArticleController.java,并继承BaseController

  • spring task类,需要在叫名task的包下,并以Task结尾,如TestTask.java

  • mapper.xml,需要在名叫mapper的包下,并以Mapper.xml结尾,如CmsArticleMapper.xml

  • mapper接口,需要在名叫mapper的包下,并以Mapper结尾,如CmsArticleMapper.java

  • model实体类,需要在名叫model的包下,命名规则为数据表转驼峰规则,如CmsArticle.java

  • spring配置文件,命名规则为applicationContext-*.xml

  • 类名:首字母大写驼峰规则;方法名:首字母小写驼峰规则;常量:全大写;变量:首字母小写驼峰规则,尽量非缩写

  • springmvc配置加到对应模块的springMVC-servlet.xml文件里

  • 配置文件放到src/main/resources目录下

  • 静态资源文件放到src/main/webapp/resources目录下

  • jsp文件,需要在/WEB-INF/jsp目录下

  • RequestMapping和返回物理试图路径的url尽量写全路径,如:@RequestMapping("/manage")return "/manage/index"

  • RequestMapping指定method

  • 模块命名为项目-子项目-业务,如zheng-cms-admin

  • 数据表命名为:子系统_,如cms_article

  • 更多规范,参考[阿里巴巴Java开发手册]

演示地址

演示地址: http://www.zhangshuzheng.cn/zhengAdmin

预览图

idea login upms cms swagger

数据模型

数据库模型

拓扑图

拓扑图

开发进度

开发进度

参与开发

首先谢谢大家支持,如果你希望参与开发,欢迎通过Github上fork本项目,并Pull Request您的commit。

常见问题

附件

优秀文章和博客

在线小工具

在线文档

许可证

MIT

MIT License Copyright (c) 2017 shuzheng Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

暂无描述 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/liuyangqi/plant.git
git@gitee.com:liuyangqi/plant.git
liuyangqi
plant
plant
master

搜索帮助

14c37bed 8189591 565d56ea 8189591