JEEPlatform
一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了 OA(办公自动化)、SCM(供应链系统)、ERP(企业资源管理系统)、CMS(内容管理系统)、CRM(客户关系管理系统)等企业系统的通用业务功能。Github 链接: https://github.com/u014427391/jeeplatform 欢迎下载或者 star(收藏)
JeePlatform 项目是一款以 Activiti 为工作流引擎,以 Spring Framework 为核心框架,集 ORM 框架 Mybatis,Web 层框架 SpringMVC 和多种开源组件框架而成的一款通用基础平台,基于本平台可以实现快速开发,实现企业信息管理的高效、高性能开发。系统追求安全、性能方面的有效实现。
系统设计
系统管理(模块名称 jeeplatform-admin)
管理系统登录页面,采用 Shiro 登录验证

管理系统主页前端,可以适配移动端页面

管理系统主页采用开源前端模板,具有换肤功能


管理系统主页,获取用户具有的权限,显示菜单

角色进行授权,只有超级管理员才具有权限

角色进行配置,可以学习一下 RBAC(基于角色的权限控制)

使用 JavaEmail 插件实现邮件发送,记得需要开启 SSl 验证

OA 管理系统(待开发)
CMS 管理系统(待开发)
系统升级
单点登录基础(模块名称 jeeplatform-sso)(开发中)
项目采用 CAS 登录登录实现,单点登录集群搭建可以参考博客: http://blog.csdn.net/u014427391/article/details/78653482 项目单点登录:使用 nginx 作为负载均衡,使用 redis 存储 tomcat session,来实现集群中 tomcat session 的共享,使用 redis 作为 cas ticket 的仓库,来实现集群中 cas ticket 的一致性。
单点登录集群如图

SpringBoot 集成 Redis 缓存处理(Spring AOP 实现)
先从 Redis 里获取缓存,查询不到,就查询 MySQL 数据库,然后再保存到 Redis 缓存里,下次查询时直接调用 Redis 缓存
package org.muses.jeeplatform.cache;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
/**
* AOP 实现 Redis 缓存处理
*/
@Component
@Aspect
public class RedisAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(RedisAspect.class);
@Autowired
@Qualifier("redisCache")
private RedisCache redisCache;
/**
* 拦截所有元注解 RedisCache 注解的方法
*/
@Pointcut("@annotation(org.muses.jeeplatform.annotation.RedisCache)")
public void pointcutMethod(){
}
/**
* 环绕处理,先从 Redis 里获取缓存,查询不到,就查询 MySQL 数据库,
* 然后再保存到 Redis 缓存里
* @param joinPoint
* @return
*/
@Around("pointcutMethod()")
public Object around(ProceedingJoinPoint joinPoint){
//前置:从 Redis 里获取缓存
//先获取目标方法参数
long startTime = System.currentTimeMillis();
String applId = null;
Object[] args = joinPoint.getArgs();
if (args != null && args.length > 0) {
applId = String.valueOf(args[0]);
}
//获取目标方法所在类
String target = joinPoint.getTarget().toString();
String className = target.split("@")[0];
//获取目标方法的方法名称
String methodName = joinPoint.getSignature().getName();
//redis 中 key 格式: applId:方法名称
String redisKey = applId + ":" + className + "." + methodName;
Object obj = redisCache.getDataFromRedis(redisKey);
if(obj!=null){
LOGGER.info("**********从 Redis 中查到了数据**********");
LOGGER.info("Redis 的 KEY 值:"+redisKey);
LOGGER.info("REDIS 的 VALUE 值:"+obj.toString());
return obj;
}
long endTime = System.currentTimeMillis();
LOGGER.info("Redis 缓存 AOP 处理所用时间:"+(endTime-startTime));
LOGGER.info("**********没有从 Redis 查到数据**********");
try{
obj = joinPoint.proceed();
}catch(Throwable e){
e.printStackTrace();
}
LOGGER.info("**********开始从 MySQL 查询数据**********");
//后置:将数据库查到的数据保存到 Redis
String code = redisCache.saveDataToRedis(redisKey,obj);
if(code.equals("OK")){
LOGGER.info("**********数据成功保存到 Redis 缓存!!!**********");
LOGGER.info("Redis 的 KEY 值:"+redisKey);
LOGGER.info("REDIS 的 VALUE 值:"+obj.toString());
}
return obj;
}
}
可以看到 Redis 里保存到了缓存
业务方案
系统管理通用功能
- 用户管理: 系统用户 OK
- 角色管理: 按照企业系统职能进行角色分配,每个角色具有不同的系统操作权限 OK
- 权限管理: 权限管理细分到系统按钮权限,菜单权限,管理员可以对权限进行细分控制
- 在线管理:管理在线用户,可以强制下线
- 菜单管理:系统可以配置系统菜单,并分配不同的权限 OK
- 报表统计:数据报表、用户分析
- 系统监控:数据监控、系统日志(用户登录记录)
- 通用接口:SMS(短信)、系统邮件、Excel 表导出导入操作...
OA 系统通用功能(待开发)
- 考勤管理:请假流程
- 人事管理:机构管理、部门管理、员工管理
CMS 系统通用功能(待开发)
- 信息管理:文章管理、文章审核 ...
技术方案
后台技术
- 工作流引擎:Activiti5
- ORM 框架:Mybatis/Hibernate JPA
- Web 框架:SpringMVC
- 核心框架:Spring Framework4.0
- 任务调度:Spring Task
- 权限安全:Apache Shiro/Spring Security
- 全文搜索引擎:Lucene/Solr
- 页面静态化处理:Freemark/Velocity
- 服务器页面包含技术:SSI
- 网页即时通讯:long polling/websocket
- 连接池:Druid (阿里开源)
- 日志处理:SLF4J
- 缓存处理:Redis、EhCache
- Excel 表处理:POI
前端技术
- 文件上传:JQuery uploadify
- 树形结构:EasyUI Tree
- 日期插件:JQuery Date
- 弹窗框架:zDialog
- Cookie 保存:JQuery Cookie
- 富文本编辑器:Baidu UEDitor
- 前端框架:Twitter Bootstrap、ExtJS
服务器
- 负载均衡:Nginx
- 分布式:alibaba Dubbo
- 中间件:RocketMQ
项目测试
- DeBug:Junit、FindBugs、EclEmma
- 程序质量:Jdepend4eclipse
- 压力测试:JMeter
工具软件
- 服务器:SecureCRT
- Java:IntelliJ IDEA/Eclipse
- 远程控制:TeamViewer
- 版本控制:Git
- Jar 管理:Maven
- UML 建模:ArgoUML
- Eclipse 测试插件:EclEmma
- 程序质量检查插件:Jdepend4eclipse(Eclipse 平台)
Github 链接: https://github.com/u014427391/jeeplatform 欢迎下载或者 star(收藏)