jeeplatform下载

1123 2020-01-12 Java Apache-2.0 官方网站

一款企业信息化开发基础平台,拟集成OA(办公自动化)、SCM(供应链系统)、ERP(企业资源管理系统)、CMS(内容管理系统)、CRM(客户关系管理系统)等企业系统的通用业务功能 JeePlatform项目是一款以Spring Framework为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,代码已经捐赠给开源中国社区

jeeplatform下载

V1.0.0.zip(V1.0.0) 下载

1.0.0.zip(1.0.0) 下载

jeeplatform趋势

jeeplatform截图

jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图 jeeplatform截图

jeeplatform介绍


一、项目简介

JeePlatform项目是一款以Spring Framework为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,代码已经捐赠给开源中国社区:https://www.oschina.net/p/jeeplatform

二、系统设计

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

管理系统登录页面,采用Shiro登录验证 ps:登录链接一般为:http://127.0.0.1:8080/jeeplatform/loginImage text

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

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

Image text

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

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

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

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

OA管理系统(待开发)

CMS管理系统(待开发)

三、关键技术

单点登录基础(模块名称jeeplatform-sso)(开发中)

项目采用CAS登录登录实现,单点登录集群搭建可以参考博客:http://blog.csdn.net/u014427391/article/details/78653482项目单点登录:使用nginx作为负载均衡,使用redis存储tomcat session,来实现集群中tomcat session的共享,使用redis作为cas ticket的仓库,来实现集群中cas ticket的一致性。

单点登录集群如图Image text

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里保存到了缓存

这里写图片描述

四、业务方案

系统管理通用功能

  • 用户管理: 系统用户

  • 角色管理: 按照企业系统职能进行角色分配,每个角色具有不同的系统操作权限

  • 权限管理: 权限管理细分到系统菜单权限

  • 在线管理:管理在线用户,可以强制下线

  • 菜单管理:系统可以配置系统菜单,并分配不同的权限

  • 报表统计:数据报表、用户分析

  • 系统监控:数据库等方面监控(采用Druid提供的)

  • 在线文档:SwaggerUI API在线文档管理

  • 通用接口:系统邮件发送功能、Excel报表功能

OA系统通用功能(待开发)

  • 考勤管理:请假流程

  • 人事管理:机构管理、部门管理、员工管理

CMS系统通用功能(待开发)

  • 信息管理:文章管理、文章审核 ...

五、技术方案

后台技术

  • 工作流引擎:Activiti5(待定)

  • ORM框架:Mybatis

  • Web框架:SpringMVC

  • 核心框架:Spring Framework4.0

  • 任务调度:Spring Task(待定)

  • 权限安全:Apache Shiro

  • 全文搜索引擎:Lucene

  • 模板引擎:JSP(还没使用Thymeleaf,前端需要重构)

  • 服务器页面包含技术:SSI(待定)

  • 网页即时通讯:websocket

  • 连接池:Druid(阿里开源)

  • 日志处理:SLF4J(日志门面框架)、logback

  • 缓存处理:Redis

  • 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

  • 远程控制:TeamViewer

  • 版本控制:Git、smartgit

  • Jar管理:Maven

  • UML建模:ArgoUML

  • Eclipse测试插件:EclEmma

  • 程序质量检查插件:Jdepend4eclipse(Eclipse平台)

六、常见问题

运行jeeplatform打开页面404,如果是用idea的,就可以edit configurations->configuration->edit working directory设置为:$MODULE_DIR$

七、版本说明

  • master版本 主干版本,代码经过测试,可以正常运行,这个版本还没集成全部CAS单点代码,因为CAS单点服务端代码基本调试成功,而客户端对接出现bug,所以并没有merge代码

  • dev版本 dev版本代码和master分支基本一致

  • 1.0.0版本 进行CAS单点登录实验的版本,CAS集成有遇到问题,还没合并代码到dev和master

  • 1.0.1版本 进行Dubbo微服务实验的版本,代码还没合并到dev和master

八、项目技术博客介绍

为了帮助学习者更好地理解代码,下面给出自己写的一些博客链接

Java框架

SpringBoot

我的Springboot系列博客可以参考我的专栏:SpringBoot系列博客

RPC框架

Redis知识

Oracle知识

MySQL知识

单点登录

Docker笔记

SQL调优知识