Crm- 第一天
CRM 基本概念
圈内存在这么一句话:“世上原本没有 CRM,大家的生意越来越难做了,才有了 CRM。”在同质化竞争时代,顾客资产尤为重要,新时代在召唤 CRM。
CRM 零碎即客户关系管理系统, 顾名思义就是治理公司与客户之间的关系. 是一种以 ” 客户关系一对一实践 ” 为根底,旨在改善企业与客户之间关系的新型管理机制。客户关系治理的定义是:企业为进步外围竞争力,利用相应的信息技术以及互联网技术来协调企业与顾客间在销售、营销和服务上的交互,从而晋升其治理形式,向客户提供翻新式的个性化的客户交互和服务的过程。其最终目标是吸引新客户、保留老客户以及将已有客户转为忠诚客户,减少公司市场份额。
CRM 的施行指标就是通过全面晋升企业业务流程的治理来升高企业老本,通过提供更疾速和周到的优质服务来吸引和放弃更多的客户。作为一种新型管理机制,CRM 极大地改善了企业与客户之间的关系,利用于企业的市场营销、销售、服务与技术支持等与客户相干的畛域。
Crm 分类
依据客户的类型不同,CRM 能够分为 BtoB CRM 及 BtoC CRM. BtoB CRM 中治理的客户是企业客户,而 BtoC CRM 治理的客户则是集体客户。提供企业产品销售和服务的企业须要的 BtoB 的 CRM,也就是市面上大部分 CRM 的内容。而提供集体及家庭生产的企业须要的是 BtoC 的 CRM。
依据 CRM 治理侧重点不同又分为操作性和剖析型 CRM。大部分 CRM 为操作型 CRM,反对 CRM 的日常作业流程的每个环节,而剖析型 CRM 则偏重于数据分析。
企业我的项目开发流程
- 产品组依据市场调研或商户共事的反馈提出 idea, 设计出原型而后跟市场, 商户共事进行确认
- UI 设计组和开发组一起探讨, 确定计划是否可行
- UI 组依据产品组提供的原型稿做出设计稿, 与产品和开发确认
- 开发组依据产品的原型稿 (看逻辑) 和 UI 组的设计稿 (看界面) 编写代码其中当然也会来回跟设计, 产品同学进行确认和沟通
- 代码编写结束后提交给测试组. 而后再提交上线
- 前期的数据跟踪和优化
这就是一个产品研发的大抵流程. 其中开发的责任就是选用适合的框架技术来实现产品所提供的需要以及设计所提供的成果。
Crm 零碎模块划分
根底模块
蕴含零碎根本的用户登录,退出,记住我,明码批改等基本操作。
营销治理
营销机会治理: 企业客户的质询需要所建设的信息录入性能,不便销售人员进行后续的客户需要跟踪。
营销开发计划:开发计划是依据营销机会而来,对于企业质询的客户,会有相应的销售人员对于该客户进行具体的沟通交流,此时对于整个 Crm 零碎而言,通过营销开发计划来进行相应的信息管理,进步客户的购买企业产品的可能性。
客户治理
客户信息管理:Crm 零碎中残缺记录客户信息起源的数据、企业与客户来往、客户订单查问等信息录入性能,不便企业与客户进行相应的信息交换与后续单干。
客户散失治理:Crm 通过肯定规定机制所定义的散失客户(有效客户),通过该规定能够无效治理客户信息资源,进步营销开发效率。
服务治理
服务治理是针对客户而开发的性能,针对客户要求,Crm 提供客户相应的信息质询,反馈与投诉性能,进步企业对于客户的服务质量。
数据报表
Crm 提供的数据报表性能可能帮忙企业理解客户整体散布,理解客户开发后果整体信息,从而帮忙企业整体调整客户开发计划,进步企业的在市场中的竞争力度。
系统管理
系统管理蕴含常量字典保护工作, 以及权限治理模块,Crm 权限治理是基于角色的一种权限管制,基于 RBAC 实现基于角色的权限管制, 通过不同角色的用户登录该零碎后展现零碎不同的操作性能,从而达到对不同角色实现不同操作性能。
CRM 零碎数据库设计
CRM 零碎依据产品的原型搞以及 UI 组的设计稿, 接下来就要设计数据库, 个别在大公司通常会有专门的 DBA, 这时咱们能够不要思考数据库表设计, 然而也要可能读懂或者理解 DBA 的设计思路不便在程序开发阶段不会呈现问题, 个别关系型数据库表设计满足三范式的设计即可, 表名设计做到见名知意最好。
表构造详情
t_sale_chance | 营销机会表 | |||
---|---|---|---|---|
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
chance_source | varchar(300) | 可空 | 机会起源 | |
customer_name | varchar(100) | 可空 | 客户名称 | |
cgjl | int(11) | 可空 | 胜利几率 | |
overview | varchar(300) | 可空 | 概要 | |
link_man | varchar(100) | 可空 | 联系人 | |
link_phone | varchar(100) | 可空 | 手机号 | |
description | varchar(1000) | 可空 | 形容 | |
create_man | varchar(100) | 可空 | 创建人 | |
assign_man | varchar(100) | 可空 | 调配人 | |
assign_time | datetime | 可空 | 调配工夫 | |
state | int(11) | 可空 | 调配状态 | |
dev_result | int(11) | 可空 | 开发后果 | |
is_valid | int(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_cus_dev_plan | 客户开发计划表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id |
sale_chance_id | int(11) | 可空 | 营销机会 id | |
plan_item | varchar(100) | 可空 | 打算内容 | |
plan_date | datetime | 可空 | 打算日期 | |
exe_affect | varchar(100) | 可空 | 执行成果 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
is_valid | int(4) | 可空 | 无效状态 | |
t_customer | 客户信息表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
khno | varchar(20) | 可空 | 客户编号 | |
name | varchar(20) | 可空 | 客户姓名 | |
area | varchar(20) | 可空 | 客户所属地区 | |
cus_manager | varchar(20) | 可空 | 客户经理 | |
level | varchar(30) | 可空 | 客户级别 | |
myd | varchar(30) | 可空 | 客户满意度 | |
xyd | varchar(30) | 可空 | 客户信用度 | |
address | varchar(500) | 可空 | 客户地址 | |
post_code | varchar(50) | 可空 | 邮编 | |
phone | varchar(20) | 可空 | 联系电话 | |
fax | varchar(20) | 可空 | 传真 | |
web_site | varchar(20) | 可空 | 网址 | |
yyzzzch | varchar(50) | 可空 | 营业执照注册号 | |
fr | varchar(20) | 可空 | 法人代表 | |
zczj | varchar(20) | 可空 | 注册资金 | |
nyye | varchar(20) | 可空 | 年营业额 | |
khyh | varchar(50) | 可空 | 开户银行 | |
khzh | varchar(50) | 可空 | 开户账号 | |
dsdjh | varchar(50) | 可空 | 地税登记号 | |
gsdjh | varchar(50) | 可空 | 国税登记号 | |
state | int(11) | 可空 | 散失状态 | |
is_valid | int(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_customer_contact | 客户来往记录表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
cus_id | int(11) | 可空 | 客户 id | |
contact_time | datetime | 可空 | 来往工夫 | |
address | varchar(500) | 可空 | 来往地址 | |
overview | varchar(100) | 可空 | 概要 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
is_valid | int(4) | 可空 | 无效状态 | |
t_customer_linkman | 客户联系人表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
cus_id | int(11) | 可空 | 客户 id | |
link_name | varchar(20) | 可空 | 联系人姓名 | |
sex | varchar(20) | 可空 | 性别 | |
zhiwei | varchar(50) | 可空 | 职位 | |
office_phone | varchar(50) | 可空 | 办公电话 | |
phone | varchar(20) | 可空 | 手机号 | |
is_valid | int(4) | 可空 | 无效状态 | |
ceate_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_customer_loss | 客户散失表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
cus_no | varchar(40) | 可空 | 客户编号 | |
cus_name | varchar(20) | 可空 | 客户姓名 | |
cus_manager | varchar(20) | 可空 | 客户经理 | |
last_order_time | date | 可空 | 最初下单工夫 | |
confirm_loss_time | date | 可空 | 确认散失工夫 | |
state | int(11) | 可空 | 散失状态 | |
loss_reason | varchar(1000) | 可空 | 散失起因 | |
is_valid | tinyint(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_customer_order | 客户订单 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
cus_id | int(11) | 可空 | 客户 id | |
order_no | varchar(40) | 可空 | 订单编号 | |
order_date | datetime | 可空 | 下单工夫 | |
address | varchar(200) | 可空 | 地址 | |
state | int(11) | 可空 | 状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
is_valid | int(4) | 可空 | 无效状态 | |
t_order_details | 订单详情表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
order_id | int(11) | 可空 | 订单 id | |
goods_name | varchar(100) | 可空 | 商品名称 | |
goods_num | int(11) | 可空 | 商品数量 | |
unit | varchar(20) | 可空 | 商品单位 | |
price | float | 可空 | 单价 | |
sum | float | 可空 | 总金额 | |
is_valid | int(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_customer_reprieve | 客户散失暂缓表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
loss_id | int(11) | 可空 | 散失 id | |
measure | varchar(500) | 可空 | 措施 | |
is_valid | tinyint(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_customer_serve | 客户服务 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
serve_type | varchar(30) | 可空 | 服务类型 | |
overview | varchar(500) | 可空 | 概要 | |
customer | varchar(30) | 可空 | 客户 | |
state | varchar(20) | 可空 | 服务状态 | |
service_request | varchar(500) | 可空 | 服务申请 | |
create_people | varchar(100) | 可空 | 服务创建人 | |
assigner | varchar(100) | 可空 | 服务调配人 | |
assign_time | datetime | 可空 | 调配工夫 | |
service_proce | varchar(500) | 可空 | 服务解决 | |
service_proce_people | varchar(20) | 可空 | 服务解决人 | |
service_proce_time | datetime | 可空 | 服务解决工夫 | |
service_proce_result | varchar(500) | 可空 | 处理结果 | |
myd | varchar(50) | 可空 | 满意度 | |
is_valid | int(4) | 可空 | 是否无效 | |
update_date | datetime | 可空 | 更新工夫 | |
create_date | datetime | 可空 | 创立工夫 | |
t_datadic | 字典表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | id 主键 |
data_dic_name | varchar(50) | 可空 | 字典名 | |
data_dic_value | varchar(50) | 可空 | 字典值 | |
is_valid | tinyint(4) | 可空 | 是否无效 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_user | 用户表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | 字段形容 |
user_name | varchar(20) | 可空 | 用户名 | |
user_pwd | varchar(100) | 可空 | 用户明码 | |
true_name | varchar(20) | 可空 | 实在姓名 | |
varchar(30) | 可空 | 邮箱 | ||
phone | varchar(20) | 可空 | 电话 | |
is_valid | int(4) | 可空 | 无效状态 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 可空 | 更新工夫 | |
t_role | 角色表 | |||
字段 | 字段类型 | 字段限度 | 字段形容 | |
主键 | id | int(11) | 自增 | 字段形容 |
role_name | varchar(255) | 可空 | 角色名 | |
role_remarker | varchar(255) | 可空 | 角色备注 | |
create_date | datetime | 可空 | 创立工夫 | |
update_date | datetime | 更新工夫 | ||
is_valid | int(11) | 非空 | 是否无效 |
pom.xml 引入坐标 & 插件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--
mybatis 集成
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
<!--mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!-- DevTools 的坐标 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果没有该配置,热部署的 devtools 不失效 -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
增加配置文件 application.yml
src/main/resources 目录下新建 application.yml 配置文件, 内容如下:
## 端口号 上下文门路
server:
port: 9898
servlet:
context-path: /crm
## 数据源配置
spring:
datasource:
type: com.mchange.v2.c3p0.ComboPooledDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root
## freemarker
freemarker:
suffix: .ftl
content-type: text/html
charset: UTF-8
template-loader-path: classpath:/views/
## 启用热部署
devtools:
restart:
enabled: true
additional-paths: src/main/java
## mybatis 配置
mybatis:
mapper-locations: classpath:/mappers/*.xml
type-aliases-package: com.xxxx.crm.vo;com.xxxx.crm.query;com.xxxx.crm.dto
configuration:
map-underscore-to-camel-case: true
## pageHelper
pagehelper:
helper-dialect: mysql
## 设置 dao 日志打印级别
logging:
level:
com:
xxxx:
crm:
dao: debug
增加视图转发源代码
新建 com.xxxx.crm.controller 包, 增加零碎登录, 主页面转发代码(这里引入 base 包, 具体文件见相干目录)。
package com.xxxx.crm.controller;
import com.xxxx.crm.base.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController extends BaseController {
/**
* 零碎登录页
* @return
*/
@RequestMapping("index")
public String index(){return "index";}
// 零碎界面欢送页
@RequestMapping("welcome")
public String welcome(){return "welcome";}
/**
* 后端治理主页面
* @return
*/
@RequestMapping("main")
public String main(){return "main";}
}
动态资源文件目录增加
在 src/main/resources 目录下新建 public 目录寄存零碎相干动态资源文件,copy 动态文件内容到 public 目录。
增加零碎登录, 主页面视图模板页
在 src/main/resources 目录下新建 views 目录, 增加 index.ftl,main.ftl 文件(具体视图文件详见相干目录)
增加 SpringBoot 利用启动类 Starter
在 com.xxxx.crm 包下新建 Starter.java , 增加启动我的项目相干代码如下:
package com.xxxx.crm;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Starter {public static void main(String[] args) {SpringApplication.run(Starter.class);
}
}