悟空 CRM 9.0 发布,高品质 JFinal 开源项目

简介: 悟空CRM采用全新的前后端分离模式,本仓库代码中已集成前端vue打包后文件,可免去打包操作如需调整前端代码,请单独下载前端代码,前端代码在根目录的ux文件夹中主要技术栈核心框架:jfinal3.

悟空CRM采用全新的前后端分离模式,本仓库代码中已集成前端vue打包后文件,可免去打包操作

如需调整前端代码,请单独下载前端代码,前端代码在根目录的ux文件夹中

主要技术栈

核心框架:jfinal3.8

缓存:redis caffeine

数据库连接池:Druid

工具类:hutool,fastjson,poi-ooxml

定时任务:jfinal-cron

项目构建工具:maven

Web容器:tomcat,undertow(默认)

前端MVVM框架:Vue.JS 2.5.x

路由:Vue-Router 3.x

数据交互:Axios

UI框架:Element-UI 2.6.3

悟空CRM是一个基于jfinal的开源crm系统,采用前后端分离的开发模式,提供了Aop,查询缓存,数据库连接池,定时器,excel导入导出等功能。

项目中主要有CRM,OA,项目管理,BI等模块,通过角色,部门,菜单实现了按钮级的功能权限控制和数据权限控制,通过将用户登录信息保存至redis来实现支持项目的热重启和分布式部署。

项目还拥有如下特性:

项目通过jfinal强大的AOP将权限判断从代码中抽离出来,用户无需手动判断登陆角色是否拥有权限,以下为通过权限注解在拦截器判断用户是否拥有访问权限

@Override
public void intercept(Invocation invocation) {
    //TODO 权限功能后台拦截
    Permissions permissions=invocation.getMethod().getAnnotation(Permissions.class);
    if(permissions!=null&&permissions.value().length>0){
        JSONObject jsonObject= Aop.get(AdminRoleService.class).auth(BaseUtil.getUserId());
        //组装应有权限列表
        List<String> arr=queryAuth(jsonObject, "");
        boolean isRelease=false;
        for (String key : permissions.value()) {
            if(!isRelease){
                if(arr.contains(key)){
                    isRelease=true;
                }
            }
        }
        if(!isRelease){
            invocation.getController().renderJson(R.error("无权访问"));
            return;
        }
    }
    invocation.invoke();
}

通过AOP和注解对数据进行非空校验,无需一个个判断参数是否为空,数据为空直接返回
自定义分页数据接收,自动处理分页参数和数据对象,给controller方法加上参数
BasePageRequest,T为对象类型,然后参数就会自动组装成分页参数和定义的对象类,以下为实现代码:

public class PageParaGetter extends ParaGetter<BasePageRequest> {
    public PageParaGetter(String parameterName, String defaultValue) {
        super(parameterName, defaultValue);
    }
    @Override
    protected BasePageRequest to(String s) {
        return null;
    }
@Override
@SuppressWarnings("unchecked")
public BasePageRequest get(Action action, Controller controller) {
    Parameter[] parameters=action.getMethod().getParameters();
    Class clazz=null;
    for (Parameter parameter:parameters){
        if(BasePageRequest.class.isAssignableFrom(parameter.getType())){
            Type parameterizedType=parameter.getParameterizedType();
            if (parameterizedType instanceof ParameterizedType) {
                Type[] params = ((ParameterizedType) parameterizedType).getActualTypeArguments();
                clazz= TypeUtils.getClass(params[0]);
            }
            break;
        }
    }
    boolean isJson=controller.getHeader("Content-Type")!=null&&controller.getHeader("Content-Type").toLowerCase().contains("application/json");
    return isJson?new BasePageRequest(controller.getRawData(),clazz):new BasePageRequest(controller.getKv(),clazz);
}

}

自定义json工厂,实现对数据的个性化解析返回,如实现将数据返回时将数据转成驼峰规则,自定义某种类型的对象的返回格式等。

可以自定义错误处理模板,在出现错误或者其他异常的情况下,可以给予用户一个清晰的提示,避免用户看到一些无用的错误信息等功能

文件可以上传到项目目录之外,避免了重新打包项目后文件的丢失

@Override
public void configConstant(Constants me) {
    me.setDevMode(prop.getBoolean("jfinal.devMode", true));
    me.setInjectDependency(true);
    //设置上传文件到哪个目录
    me.setBaseUploadPath(BaseConstant.UPLOAD_PATH);
    me.setBaseDownloadPath(BaseConstant.UPLOAD_PATH);
    //自定义json工厂
    me.setJsonFactory(new ErpJsonFactory());
    //限制上传100M
    me.setMaxPostSize(104857600);
}

采用项目分层化的设计,职责分工明确,降低代码的耦合性Hander->对指定规则的url进行捕获或者放心Interceptor->环绕式AOP拦截,对访问权限,数据权限,参数等进行校验,可以配置在全局,单个路由,单个controller,单个方法等上面,可进行自定义实现,对数据进行处理

Router->对不同规则的数据进行分发,不同url进入不同路由和controller

Controller->对参数进行组装,将数据传入到service处理后进行render返回

Service->对业务代码进行处理,并将数据转入Db处理或缓存
Db->对数据库进行操作
Render->将service返回的数据在controller进行返回,以及出错后通过

SQL模板功能,将sql写入到xx.sql文件中,如果sql文件有变动,无需重新编译打包,直接改动sql文件中的sql即可,以下为自动扫描指定路径下sql文件的代码:

private void getSqlTemplate(String path, ActiveRecordPlugin arp) {
    File file = new File(path);
    if (file.exists()) {
        File[] files = file.listFiles();
        if (files != null && files.length > 0) {
            for (File childFile : files) {
                if (childFile.isDirectory()) {
                    getSqlTemplate(childFile.getAbsolutePath(), arp);
                } else {
                    if (childFile.getName().toLowerCase().endsWith(".sql")) {
                        arp.addSqlTemplate(childFile.getAbsolutePath().replace(PathKit.getRootClassPath(), "").replace("\\", "/"));
                    }
                }
            }
        }
    }
}

以下是系统的部分截图:
以下为悟空CRM9.0 JAVA版部分功能系统截图


明


目录
相关文章
|
前端开发 JavaScript NoSQL
白嫖他悟空CRM项目 ,部署了直接用起来
白嫖他悟空CRM项目 ,部署了直接用起来
999 0
白嫖他悟空CRM项目 ,部署了直接用起来
|
11月前
|
人工智能 自然语言处理 搜索推荐
销售易、悟空、神州云动CRM:全方位功能解析与优势特色盘点
销售易CRM、悟空CRM和神州云动CRM各自具备独特的产品功能与优势,适用于不同类型的企业。销售易CRM提供移动化、社交化和AI驱动的全流程管理,适合大型企业及跨国公司;悟空CRM以智能数据分析和移动办公支持见长,适合中大型企业;神州云动CRM则凭借灵活定制和多行业适配能力,特别适合大中型企业。企业在选择时应根据自身需求和发展战略,挑选最适合的CRM系统,以实现客户关系管理的最大化效益。
|
11月前
|
数据挖掘 BI 数据安全/隐私保护
三大CRM品牌深度评测:销售易、悟空、超兔
**销售易CRM**:专为中国市场设计,提供强大的本土化服务和定制化解决方案,涵盖客户管理、销售自动化、市场营销、服务支持及数据分析等功能。 **悟空CRM**:以“智慧、灵活、高效”为核心,用户界面友好,支持销售、营销和服务的全面自动化,并具备高级数据分析和协作工具。 **超兔CRM**:专注于数据分析和集成性,提供360度客户视图、销售自动化、市场营销、客户服务及安全性保障,适用于各种规模的企业。 通过对比三者的功能和优势,企业可以更明智地选择适合自己的CRM系统,从而更好地管理客户关系,提升业务绩效。
|
11月前
|
人工智能 搜索推荐 数据挖掘
企业CRM选型指南:销售易、悟空、超兔的全面对比
在数字化转型中,CRM系统成为企业提升销售效率和竞争力的关键工具。本文对比了销售易CRM、悟空CRM与超兔CRM三个品牌: - **销售易CRM**:提供从线索到现金的全流程管理,拥有强大的数据分析、定制化服务及本土化优势,适合大型企业和跨国公司。 - **悟空CRM**:内置智能数据分析、移动办公支持和360度客户视图,灵活性高,适合中大型及快速发展的企业。 - **超兔CRM**:界面简洁直观,高度定制化,集成第三方应用,支持移动办公,主要面向中小企业。 企业应根据自身需求和预算选择合适的CRM系统,以实现最佳的客户关系管理和销售自动化。
|
12月前
|
监控 数据挖掘 BI
企业CRM选择指南:悟空CRM和销帮帮的适用场景分析
销售易旗下的悟空CRM和销帮帮分别针对不同企业需求提供了独特的CRM解决方案。悟空CRM以其智能数据分析、移动办公支持、客户360度视图及自定义工作流等优势,适合中大型企业;而销帮帮则以简单易用、销售漏斗管理、客户跟进提醒及高性价比等特点,更适合中小企业和初创企业。两者各具特色,助力企业在数字化转型中提升竞争力。
|
数据挖掘
国产CRM系统精粹:销售易、悟空CRM、金蝶的深度对比分析
在企业数字化转型中,CRM系统成为提升竞争力的关键工具。本文深度解析国产CRM系统的三个知名品牌:销售易、悟空CRM与金蝶。 **销售易**:覆盖营销、销售、服务全流程,支持全渠道获客、潜客识别、营销自动化及AIGC技术应用,适合大型和跨国公司。 **悟空CRM**:以易用性和灵活性著称,提供客户管理、销售跟踪、市场营销和服务支持功能,适合预算有限的中小企业。 **金蝶**:集成财务管理软件,提供云服务、定制化解决方案和强大的数据分析功能,适合已使用金蝶财务管理软件的企业。 这三款CRM系统各具特色,企业应根据自身需求选择合适的工具,以实现客户关系的全面管理,提升业务效率和客户满意度。
|
12月前
|
监控 数据挖掘
定制化CRM:销售易、悟空CRM、销帮帮的精准企业适配
在数字化转型中,CRM系统成为提升客户管理和销售业绩的关键工具。本文盘点了国产三大CRM品牌:销售易、悟空CRM和销帮帮。 - **销售易**:以全面的销售管理和强大的数据分析著称,适合追求高效率和复杂流程管理的大型企业。 - **悟空CRM**:界面友好、模块化设计、高性价比,适合预算有限、需快速上手的中小企业。 - **销帮帮**:支持移动办公,提供基本CRM功能,适合需要随时随地管理客户的中小企业。 企业应根据自身需求选择最适合的CRM系统。
|
网络协议 数据安全/隐私保护 网络架构
提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透
提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透
332 2
|
网络协议 数据安全/隐私保护 网络架构
五分钟学会搭建悟空CRM内网穿透,实现公网访问企业内网,提升工作效率!
五分钟学会搭建悟空CRM内网穿透,实现公网访问企业内网,提升工作效率!
|
缓存 前端开发 NoSQL
悟空CRM-11.0正式开源发布!
悟空CRM-基于Spring Cloud Alibaba微服务架构 +vue ElementUI的前后端分离CRM系统
6055 0
悟空CRM-11.0正式开源发布!