JEEPlatform

一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了OA(办公自动化)、SCM(供应链系统)、ERP(企业资源管理系统)、CMS(内容管理系统)、CRM(客户关系管理系统)等企业系统的通用业务功能。Github链接:https://github.com/u014427391/jeeplatform
欢迎下载或者star(收藏)

JeePlatform项目是一款以Activiti为工作流引擎,以Spring Framework为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,基于本平台可以实现快速开发,实现企业信息管理的高效、高性能开发。系统追求安全、性能方面的有效实现。项目还在开发中。。。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

系统设计

系统管理(模块名称jeeplatform-admin)

管理系统登录页面,采用Shiro登录验证
SpringBoot开源项目(企业信息化基础平台) 随笔 第1张

管理系统主页前端,可以适配移动端页面
SpringBoot开源项目(企业信息化基础平台) 随笔 第2张

管理系统主页采用开源前端模板,具有换肤功能
SpringBoot开源项目(企业信息化基础平台) 随笔 第3张

SpringBoot开源项目(企业信息化基础平台) 随笔 第4张

管理系统主页,获取用户具有的权限,显示菜单
SpringBoot开源项目(企业信息化基础平台) 随笔 第5张

角色进行授权,只有超级管理员才具有权限
SpringBoot开源项目(企业信息化基础平台) 随笔 第6张

角色进行配置,可以学习一下RBAC(基于角色的权限控制)
SpringBoot开源项目(企业信息化基础平台) 随笔 第7张

使用JavaEmail插件实现邮件发送,记得需要开启SSl验证
SpringBoot开源项目(企业信息化基础平台) 随笔 第8张

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开源项目(企业信息化基础平台) 随笔 第9张

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; } } 

SpringBoot开源项目(企业信息化基础平台) 随笔 第10张

可以看到Redis里保存到了缓存

SpringBoot开源项目(企业信息化基础平台) 随笔 第11张

业务方案

系统管理通用功能

  • 用户管理: 系统用户 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(收藏)

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄