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

2017-12-25 10:38:29 +08:00
 javahih

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

业务方案

系统管理通用功能

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

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

技术方案

后台技术

前端技术

服务器

项目测试

工具软件

Github 链接: https://github.com/u014427391/jeeplatform 欢迎下载或者 star(收藏)

5237 次点击
所在节点    分享发现
5 条回复
firefox12
2017-12-25 11:11:08 +08:00
说实话 贴代码这种宣传方式真是 low 爆了,最关键的是谁会用,怎么样能用。那些平台可以一键部署 使用,那些平台可以直接使用。现在的人耐心越来越少,只有我还写这些东西,当然我知道你也根本不会看
sobigfish
2017-12-25 11:14:49 +08:00
开源就开源 和 GitHub 有一毛钱关系么?拿 GitHub 背书(还以为是 GitHub 官方的项目的)
而且没有见到开源协议
Choose a License: Choose an open source license
https://choosealicense.com/
mokeyjay
2017-12-25 11:19:20 +08:00
@sobigfish #2 LZ 大概只是想说托管在 github 上的意思吧……(善意揣测
不过确实容易出现歧义

另外这 UI 真的比较老了
冲开源的份上点个赞
sobigfish
2017-12-25 11:22:29 +08:00
@mokeyjay #3 应该只是标题党而已(没有背书什么的),但没有协议的前提下不叫开源
mokeyjay
2017-12-25 11:27:20 +08:00
@sobigfish #4 我对开源的理解是“开放源码”,在我的理解中 LZ 这叫开源;至于有没有协议只是开源者是否希望约束其他人而已

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417352

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX