zoukankan      html  css  js  c++  java
  • SpringBoot开源项目(企业信息化基础平台)

    JEEPlatform

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

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

    系统设计

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

    管理系统登录页面,采用Shiro登录验证
    Image 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里保存到了缓存

    这里写图片描述

    业务方案

    系统管理通用功能

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

  • 相关阅读:
    JS 随机整数
    微信小程序 功能函数 支付接口
    JS 正则表达式
    JS 日期 自动补齐 “2017-11-22 14:43”
    schema get_ddl
    StringBuffer 清空
    java中split任意数量的空白字符
    美国法官工资
    纪检委,检察院的工资
    国家司法机构
  • 原文地址:https://www.cnblogs.com/mzq123/p/9064739.html
Copyright © 2011-2022 走看看