一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了OA(办公自动化)、SCM(供应链系统)、ERP(企业资源管理系统)、CMS(内容管理系统)、CRM(客户关系管理系统)等企业系统的通用业务功能。Github链接:https://github.com/u014427391/jeeplatform
欢迎下载或者star(收藏)
JeePlatform项目是一款以Activiti为工作流引擎,以Spring Framework为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,基于本平台可以实现快速开发,实现企业信息管理的高效、高性能开发。系统追求安全、性能方面的有效实现。
管理系统登录页面,采用Shiro登录验证
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mz18g3j7-1572658864263)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/管理系统登录页面.png)]
管理系统主页前端,可以适配移动端页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j3axel2n-1572658864265)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/适配移动端.png)]
管理系统主页采用开源前端模板,具有换肤功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sF0VHrXy-1572658864266)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/系统主页墨绿主题.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtVQ92zp-1572658864267)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/系统主页清新主题.png)]
管理系统主页,获取用户具有的权限,显示菜单
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2LReRxmt-1572658864267)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/管理系统主页.png)]
角色进行授权,只有超级管理员才具有权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIXUu0sA-1572658864268)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/角色授权.png)]
角色进行配置,可以学习一下RBAC(基于角色的权限控制)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mFFxxQO-1572658864268)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/角色配置.png)]
使用JavaEmail插件实现邮件发送,记得需要开启SSl验证
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgHkbjuT-1572658864269)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/发送邮件.png)]
项目采用CAS登录登录实现,单点登录集群搭建可以参考博客:
http://blog.csdn.net/u014427391/article/details/78653482
项目单点登录:使用nginx作为负载均衡,使用redis存储tomcat session,来实现集群中tomcat session的共享,使用redis作为cas ticket的仓库,来实现集群中cas ticket的一致性。
单点登录集群如图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pKgeCvYX-1572658864269)(https://github.com/u014427391/jeeplatform/raw/master/screenshot/单点登录集群.png)]
先从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里保存到了缓存
Github链接:https://github.com/u014427391/jeeplatform
欢迎下载或者star(收藏)