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(收藏)

SpringBoot开源项目(企业信息化基础平台)的更多相关文章

  1. Github开源项目(企业信息化基础平台)

    JEEPlatform 一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了OA(办公自动化).SCM(供应链系统).ERP(企业资源管理系统).CMS(内容管理系统).CRM(客户关 ...

  2. Github 上 10 个值得学习的 Springboot 开源项目

    Spring Boot 几乎继承了所有 Spring 框架的优点,同时还可以让项目的配置更简化.编码更简化.部署更方便.近两年受到很多开发者的追捧,也是火热的不行! 下面给大家整理了 10 个 Git ...

  3. SpringBoot开源项目Jeeplatform

    JEEPlatform 一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了OA(办公自动化).SCM(供应链系统).ERP(企业资源管理系统).CMS(内容管理系统).CRM(客户关 ...

  4. NopCommerce开源项目中很基础但是很实用的C# Helper方法

    刚过了个五一,在杭州到处看房子,不知道杭州最近怎么了,杭州买房的人这么多,房价涨得太厉害,这几年翻倍翻倍地涨,刚过G20,又要亚运会,让我这样的刚需用户买不起,也买不到房子,搞得人心惶惶,太恐怖了,心 ...

  5. SpringBoot开源项目学习总结

    一.实现日期格式数据类型的转换 首先,定义DateConverter实现Converter<String, Date>接口: package com.stevlu.common; impo ...

  6. 开源项目推荐 - 巨鲸任务调度平台(Spark、Flink)

    Big Whale(巨鲸),为美柚大数据研发的大数据任务调度平台,提供Spark.Flink等离线任务的调度(支持任务间的依赖调度)以及实时任务的监控,并具有批次积压告警.任务异常重启.重复应用监测. ...

  7. Odoo免费开源企业信息化平台助力企业成功

    企业信息化变革之路 信息孤岛的真实由来 打开百度App,看更多图片 左边为当下企业现状,右边为Odoo的整体 企业信息孤岛的严重性,来自于企业的自身高速发展,企业以销售为生命主题围绕着客户会搭建一系列 ...

  8. 【Android 应用开发】GitHub 优秀的 Android 开源项目

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

  9. 开源项目大全 >> ...

    http://www.isenhao.com/xueke/jisuanji/kaiyuan.php   监控系统-Nagios 网络流量监测图形分析工具-Cacti 分布式系统监视-zabbix 系统 ...

随机推荐

  1. PostgreSQL uuid

    --执行一 create extension "uuid-ossp" --执行二 select uuid_generate_v4()

  2. H5canvas画类似心电图

    HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像,我们可以使用canvas来绘制类似心电图的东西. 效果图如下: <!DOCTYPE html> <ht ...

  3. tensorflow学习之(九)classification 分类问题之分类手写数字0-9

    #classification 分类问题 #例子 分类手写数字0-9 import tensorflow as tf from tensorflow.examples.tutorials.mnist ...

  4. 02.02.01 第1章 简介及基础操作(Power BI商业智能分析)

    02.02.01.01 powerbi简介 00:10:59 02.02.01.02 query数据导入 00:03:26 具体操作实例如下: 02.02.01.03导入access数据 00:05: ...

  5. Javascript中表达式和语句的区别

    一.表达式:一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数. 以下例子就是表达式: a=35: b=1+a; a=function (){return 6}: b ...

  6. Effective Java -- 使可变性最小化

    为了使类成为不可变的,应该遵循以下五条原则: 1. 不要提供任何会下盖对象状态的方法 2. 保证类不会被扩展 3. 使所有的域都是final的 4. 使所有的域都成为私有的 5. 确保对于任何可变组件 ...

  7. PS扣签名

    1.用PS打开签名: 2.在图层界面切换到[通道],选择一个黑白分明或者明暗明显的签名图通道.按着“Ctrl”键就会显示出手指和方块的图标,按键的同时左击一下选择的通道: 3.切换到第一项的[图层]界 ...

  8. idea安装了Mybaits Plugin插件后,启动不起来了

    之前安装了一些插件,谁知道重启完了之后,直接启动不起来了,报错信息如下: cannot load project fatal error initializing plugin com.seven7. ...

  9. hbase单机版安装+phoneix SQL on hbase 单节点安装

    hbase 单机安装部署及phoneix 单机安装 Hbase 下载 (需先配置jdk) https://www.apache.org/dyn/closer.lua/hbase/2.0.1/hbase ...

  10. 重装win10+ubuntu 双系统 UEFI启动模式

    有较强的时效性!!先看一眼日期是否太古老! 任务 卸载双系统中的Ubuntu14,安装Ubuntu16 环境 操作系统: Win10 + Ubuntu14双系统 硬盘: 固态硬盘 + 机械硬盘,电脑的 ...