MarketGo Java版企业微信SCRM系统

2023-11-07 12:15:51 浏览数 (1)

一、概述

1.1、行业背景

国外的营销触达通道比较单一,主要以EDM为主。国内因为渠道的变化营销场景就复杂很多,当前国内做用户的营销触达主要的场景通道都有哪些。

  • 企业微信(私聊、社群、朋友圈)
  • 微信运营(公众号、小程序、视频号)
  • 电商运营(抖音、快手、淘宝、京东、拼多多)
  • 公域运营(短信、邮件、APP弹窗、PUSH推送、banner位)
  • 其他

虽然国内已经有非常多的 MarTech 公司做出了非常优秀的 SaaS 产品服务,但是国内的市场需求依然没有得到充分满足。主要体现在以下几点:

  • 痛---企业更注重客户的数据安全,私有化部署意愿强烈。
  • 痛---经营场景复杂,需要同全域经营场景打通做一体化营销,而不是单纯的买一套系统工具。
  • 痛---需要源代码,越来越多的企业开始选择自建,以打造出更适合自己业务的营销系统。其背后的主要原因就是市场上直接采购的 SaaS 标准工具“不业务”。

基于以上的痛点若稍具规模的企业想要解决以上问题,只有自建一条路,但是选择自建碰到最大的问题就是:

0-1 自建周期成本高

一个复杂的营销自动化系统从 0-1 开发出来并没有想象的那么简单,都需要浪费大量的人力和物力,甚至短期内是看不见什么成果的,很容易导致不了了之。那么有什么好的办法能解决呢?

1.2、MarketGo简介

基于以上背景,国内开源的营销自动化项目寥寥无几,MarketGo 在此背景下特意开源出来,以为国内数字化营销贡献绵薄之力

MarketGo 是一个营销引擎,通过提供的标准化功能和基础能力,让开发者能快速搭建适合自己企业的营销系统,快速完成从 0-1 的过程,并且能基于开放的能力和源码,开发深度融合自身业务的营销系统。

MarketGo 作为领域的产品新秀,也需要一步一个脚印逐步向前迈进。对未来的发展主要分以下几个阶段:

  • 构建私域SCRM营销平台

此阶段我们结合了当下私域营销的趋势,选择了优先从企业微信SCRM场景切入。 在这个阶段我们会提供个比较基础的企业微信SCRM功能,保留了其灵活的扩展性,便于开发者能够快速基于 MarketGo 开发自己想要的 SCRM 功能。

  • 全域营销基础能力搭建

此阶段我们会重点完善平台的全域营销能力,我们会接入更多的营销场景通道、人群圈选能力、任务下发能力、内容导入能力、自动化能力等。

  • 自动化场景快速迭代

此阶段我们会快速基于场景构建全域营销自动化方案。

二、产品功能

MarketGo的优势:

  1. 以私域SCRM为切入点,但不是终于私域SCRM,我们要提供全域的营销解决方案;
  2. 开发融合能力,基于营销场景,可以整合内容、商城、CDP等上下游系统;
  3. 微服务架构,基于JAVA的前后端分离,微服务架构,可以便于企业快速敏捷的进行二次开发;
  4. 专业的技术服务,在toB的企业,产品和售后服务是同等重要的事情,我们有专业的售后团队,可以快速响应客户的技术、产品等问题。

三、项目介绍

3.1、项目结构

前端项目结构如下:

代码语言:javascript复制
├── babel.config.js       --按需引入配置
├── package-lock.json     --结合了逻辑树和物理树的一个快照
├── package.json          --安装树
├── public                --公共文件
│   ├── favicon.ico       --网页标题的左侧小图标
│   └── index.html        --入口页面
├── src                   --源码文件
│   ├── App.vue           --根组件
│   ├── api               --api配置
│   ├── assets            --资源文件
│   ├── components        --公共组件
│   ├── main.js           --入口文件
│   ├── mixins            --js配置 公共变量
│   ├── router            --路由
│   ├── store             --状态库
│   ├── utils             --公共方法
│   └── views             --视图界面
└── vue.config.js         --配置文件

后端项目结构如下:

代码语言:javascript复制
├── marketgo.sql           --系统的sql脚本
├── mktgo-api              --dubbo的接口定义
├── mktgo-biz              --业务module
├── mktgo-common           --公共依赖
├── mktgo-core             --业务核心公共模块,
├── mktgo-gateway          --网关服务,请求企微的接口
├── mktgo-react            --接收外部请求的modul,可以根据自己的客户量级,做成服务
├── mktgo-test             --测试项目
├── mktgo-web              --web服务
└── pom.xml                --公共依赖

客户端项目结构如下:

代码语言:javascript复制
├── LICENSE
├── index.html              --入口页面
├── package-lock.json       --结合了逻辑树和物理树的一个快照
├── package.json            --安装树
├── public
│   └── env.js
├── src                     --源码文件
│   ├── App.vue             --根组件
│   ├── api                 --api配置
│   ├── imgs                --图片资源
│   ├── main.js             --入口文件
│   ├── pinia
│   ├── router.js
│   ├── utils               --公共方法
│   └── view                --视图界面
└── vite.config.js          --配置文件

3.2、技术框架

  • 核心框架:SpringBoot 2.7.0
  • 日志管理:SLF4J 1.7
  • 持久层框架:spring-data-jpa 2.7.0
  • RPC框架:dubbo 2.7.13
  • 项目管理框架: Maven 3.6.0
  • 前端框架:Vue 2.6.11
  • UI框架: element-ui 2.15.9

3.3、开发环境

  • IDE: IntelliJ IDEA 2019.2
  • DB: Mysql 5.7.37
  • JDK: JDK 1.8
  • Maven: Maven 3.6.1
  • Redis:7.0.2
  • Nginx: 1.12.2

3.4、部署流程

服务器配置

服务器的最低配置如下:

类型

配置

操作系统

CentOS 7.6

CPU

4核

内存

8G

硬盘

80G

带宽

3M

端口设置

服务

端口

zookeeper

2181

mktgo-gateway

8521

mktgo-web

8520

dubbo

28090

Xxl-job

8580

redis

6379

mysql

3306

环境准备

1、环境配置

组件名称

版本号

JDK

1.8

mysql

5.7.0

redis

7.0.2

rabbitmq

3.10.0

nginx

1.20.1

zookeeper

3.4.6

2、JDK

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

#设置环境变量

vi /etc/profile

#添加一下信息

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport CLASSPATH=.:JAVA_HOME/jre/lib/rt.jar:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jarexport PATH=PATH:

#保存加载

source /etc/profile

3、mysql

#创建项目目录

mkdir -p /opt/soft/marketgo/mysqlcd /opt/soft/marketgo/mysql

#安装wget下载器

yum install -y wget 

#下载mysql

wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar

#解压

tar xf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar

#安装rpm

rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-server-5.7.37-1.el7.x86_64.rpm --nodeps --force

#启动服务

systemctl start mysqldsystemctl enable mysqldsystemctl status mysql

#查询密码

grep 'temporary password' /var/log/mysqld.log

#登录并修改密码

mysql -u root -p'password'ALTER USER 'root'@'localhost' IDENTIFIED BY 'MarketGo@mysql2022';

4、redis

#创建项目目录

mkdir -p /opt/soft/marketgo/redis

cd /opt/soft/marketgo/redis

wget https://github.com/redis/redis/archive/7.0.2.tar.gz

tar -zxvf 7.0.2.tar.gz

mv redis-7.0.2 /usr/local/redis

cd /usr/local/redis/

make install PREFIX=/usr/local/redis

# 配置redis 密码及参数

vim /usr/local/redis/redis.conf

#修改如下配置

daemonize yesprotected-mode no./bin/redis-server redis.conf

5、rabbitmq

#创建项目目录mkdir -p /opt/soft/marketgo/rabbitmqcd /opt/soft/marketgo/rabbitmqcurl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bashyum install erlang -yerl -versioncurl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bashyum install rabbitmq-server -ysystemctl enable rabbitmq-server.servicesystemctl start rabbitmq-server.servicerabbitmq-plugins enable rabbitmq_managementrabbitmqctl add_user admin 'admin'rabbitmqctl set_user_tags admin administratorps -ef | grep rabbitmq

6、nginx

yum info nginxyum install nginxservice nginx startnginx -v

7、zookeeper

mkdir -p /opt/soft/marketgo/zookeepercd  /opt/soft/marketgo/zookeeperwget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gztar -zxvf zookeeper-3.4.6.tar.gzcd zookeeper-3.4.6/conf/mv zoo_sample.cfg zoo.cfg./bin/zkServer.sh startps -ef | grep zookeeper

前端部署

1、部署安装包

#下载代码,进入根目录下的version目录,上传dist.zipscp dist.zip root@${IP}:/opt/soft/marketgo/

#登录服务器,进入/opt/soft/marketgo/

unzip dist.zip

mv dist html

#修改服务器地址cd /opt/soft/marketgo/html

#修改服务器的地址vim env.js 

后端部署

1、环境设置

1.1、设置nginx

修改nginx.conf

vim /etc/nginx/nginx.conf

nginx.conf

代码语言:javascript复制
http{

gzip on; gzip_static on; gzip_disable "msie6"; gzip_min_length 100k; gzip_buffers 4 16k; gzip_comp_level 5; log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                       '$status $body_bytes_sent "$http_referer" '                       '"$http_user_agent" "$http_x_forwarded_for"'; access_log  /var/log/nginx/access.log  main; sendfile            on; tcp_nopush          on; tcp_nodelay         on; keepalive_timeout   65; types_hash_max_size 4096; client_max_body_size  100m; client_body_buffer_size 100m; client_body_temp_path   temp/; include             /etc/nginx/mime.types; default_type        application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server{ listen       80; listen       [::]:80; server_name  localhost; #root         /usr/share/nginx/html; #root         /opt/soft/html; #   指定允许跨域的方法,*代表所有 location /{ proxy_set_header Host $host; proxy_set_header   X-Real-IP        $remote_addr; proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; proxy_buffer_size  128k; proxy_buffers   32 32k; proxy_busy_buffers_size 128k; client_max_body_size  100m; client_body_buffer_size 100m; client_body_temp_path   temp/; proxy_connect_timeout       60; proxy_send_timeout          60; proxy_read_timeout          60; send_timeout                60; proxy_http_version 1.1;#开启后端,长连接 proxy_set_header Connection ""; root   /opt/soft/marketgo/html; index  index.html index.htm; } location /marketgo{ root /opt/soft/marketgo/client; try_files $uri $uri/ /marketgo/index.html; } location /web{ client_max_body_size  100m; client_body_buffer_size 100m; client_body_temp_path   temp/; if ($request_method = 'OPTIONS'){ add_header Access-Control-Allow-Origin '$http_origin'; add_header Access-Control-Allow-Headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,api-token,header-api-token,language,Api-Token,isPlatform'; add_header 'Access-Control-Allow-Methods' 'GET, POST, DELETE, OPTIONS, PUT'; add_header Access-Control-Allow-Credentials 'true'; return 204; } proxy_pass http://127.0.0.1:8520/; } location /mktgo/api{ proxy_pass http://127.0.0.1:8521; } location /mktgo/client{ proxy_pass http://127.0.0.1:8521; } location ~  .*.(txt)${ proxy_pass http://127.0.0.1:8521; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Access-Control-Allow-Origin $http_origin; add_header Access-Control-Allow-Credentials true; } # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; }

重新加载nginx

#重新加载conf/usr/sbin/nginx -s reload#重启systemctl restart nginx

1.2、设置hosts

#配置hostsvim /etc/hosts#添加以下配置127.0.0.1  dev-marketgo.com zk.dev-marketgo.com redis.dev-marketgo.com rabbitmq.dev-marketgo.com  mysql.dev-marketgo.com127.0.0.1  xxl-job.dev-marketgo.com#加载source /etc/hosts

1.3、设置数据库

#下载代码,进入根目录下的version目录,上传xxl-job的数据库scp xxl-job.zip root@{IP}:/opt/soft/marketgo#解压unzip xxl-job.zip#导入定时任务的信息 xxl-job 在项目的根目录下source /opt/soft/marketgo/xxl-job/xxl_job.sql#下载代码,进入根目录下的version目录,上传marketgo的数据库scp web.zip root@{IP}:/opt/soft/marketgo#解压unzip web.zip#登录mysql,加载marketgo数据库source /opt/soft/marketgo/web/marketgo.sql

1.4、添加rabbitmq虚拟机

rabbitmqctl add_vhost /wecomrabbitmqctl set_permissions -p /wecom admin '.*' '.*' '.*'systemctl restart rabbitmq-server.service

2、部署安装包

2.1、部署xxl-job

#登录服务器, 创建日志文件mkdir -p /opt/soft/marketgo/logs/xxl-job#进入/opt/soft/marketgo/xxl-jobchmod  777 xxl-job-admin-2.3.1.jar#启动服务java -jar xxl-job-admin-2.3.1.jar  & >> /opt/soft/marketgo/logs/xxl-job/xxl-job.log

2.2、部署gateway服务

#下载代码,进入根目录下的version目录,上传gateway.zipscp gateway.zip root@${IP}:/opt/soft/marketgo/#登录服务器,进入/opt/soft/marketgo/unzip gateway.zipcd gatewaychmod  777 *./start_service.sh start

2.3、部署web服务

#下载代码,进入根目录下的version目录,上传web.zipscp web.zip root@${IP}:/opt/soft/marketgo/#登录服务器,进入/opt/soft/marketgo/unzip web.zipcd webchmod  777 *./start_service.sh start

0 人点赞