2.1. CRM基本概念
圈内存在这么一句话:“世上本来没有CRM,大家的生意越来越难做了,才有了CRM。”在同质化竞争时代,顾客资产尤为重要,新时代在呼唤CRM。
CRM系统即客户关系管理系统, 顾名思义就是管理公司与客户之间的关系. 是一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制。客户关系管理的定义是:企业为提高核心竞争力,利用相应的信息技术以及互联网技术来协调企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交互和服务的过程。 其最终目标是吸引新客户、保留老客户以及将已有客户转为忠实客户,增加公司市场份额。CRM的实施目标就是通过全面提升企业业务流程的管理来降低企业成本,通过提供更快速和周到的优质服务来吸引和保持更多的客户。作为一种新型管理机制,CRM极大地改善了企业与客户之间的关系,应用于企业的市场营销、销售、服务与技术支持等与客户相关的领域。
2.2. Crm分类
根据客户的类型不同,CRM可以分为B to B CRM及B to C CRM. B to B CRM中管理的客户是企业客户,而BtoC CRM管理的客户则是个人客户。提供企业产品销售和服务的企业需要的BtoB的CRM,也就是市面上大部分CRM的内容。而提供个人及家庭消费的企业需要的是B to C的CRM。
根据CRM管理侧重点不同又分为操作性和分析型CRM。大部分CRM为操作型CRM,支持CRM的日常作业流程的每个环节,而分析型CRM则偏重于数据分析。
2.3.
1. 产品组根据市场调研或商户同事的反馈提出idea, 设计出原型然后跟市场, 商户同事进行确认
2. UI设计组和开发组一起讨论, 确定方案是否可行
3. UI组根据产品组提供的原型稿做出设计稿, 与产品和开发确认
4. 开发组根据产品的原型稿(看逻辑)和UI组的设计稿(看界面)编写代码其中当然也会来回跟设计, 产品
同学进行确认和沟通
5. 代码编写完毕后提交给测试组. 然后再提交上线
6. 后期的数据跟踪和优化
这就是一个产品研发的大致流程. 其中开发的责任就是选用合适的框架技术来完成产品所提供的需 求以及设计所提供的效果。
3.1. 系统功能模块图
3.2. 模块功能描述
3.2.1. 基础模块
包含系统基本的用户登录,退出,记住我,密码修改等基本操作。
3.2.2. 营销管理
营销机会管理:企业客户的质询需求所建立的信息录入功能,方便销售人员进行后续的客户需求跟踪。
营销开发计划:开发计划是根据营销机会而来,对于企业质询的客户,会有相应的销售人员对于该客户进行具体的沟通交流,此时对于整个Crm系统而言,通过营销开发计划来进行相应的信息管理,提高客户的购买企业产品的可能性。
3.2.3. 客户管理
客户信息管理:Crm系统中完整记录客户信息来源的数据、企业与客户交往、客户订单查询等信息录入 功能,方便企业与客户进行相应的信息交流与后续合作。
客户流失管理:Crm通过一定规则机制所定义的流失客户(无效客户),通过该规则可以有效管理客户 信息资源,提高营销开发效率。
3.2.4. 服务管理
服务管理是针对客户而开发的功能,针对客户要求,Crm提供客户相应的信息质询,反馈与投诉功能, 提高企业对于客户的服务质量。
3.2.5. 数据报表
Crm提供的数据报表功能能够帮助企业了解客户整体分布,了解客户开发结果整体信息,从而帮助企业 整体调整客户开发计划,提高企业的在市场中的竞争力度。
3.2.6. 系统管理
系统管理包含常量字典维护工作,以及权限管理模块,Crm权限管理是基于角色的一种权限控制,基于RBAC实现基于角色的权限控制,通过不同角色的用户登录该系统后展示系统不同的操作功能,从而达到对不同角色完成不同操作功能。
CRM系统根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一般在大公司通常会有专门的DBA, 这时我们可以不要考虑数据库表设计, 但是也要能够读懂或者了解DBA的设计思路方便在程序开发阶段不会出现问题, 一般关系型数据库表设计满足三范式的设计即可, 表名设计做到见名知意最好。
4.1. E-R
4.1.1.
4.1.2.
4.1.2.1.
4.1.2.2. 客户流失管理
4.1.3. 服务管理
4.1.4.
4.1.4.1. 权限模块E-R 模型
4.1.4.2.
4.2. 表结构详情t_sale_chance
5.1.
5.2.
5.2.1. Idea
5.2.2. pom.xml
5.2.3.
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
5.2.4. 添加视图转发源代码
新建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";
}
}
5.2.5. 静态资源文件目录添加
在src/main/resources目录下新建public 目录存放系统相关静态资源文件,copy静态文件内容到public 目录。
5.2.6. 添加系统登录,主页面视图模板页
在src/main/resources 目录下新建views目录,添加index.ftl,main.ftl 文件(具体视图文件详见相关目录)
5.2.7.
在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);
}
}
5.2.8.
5.2.9.
Chrome浏览器访问登录页地址:http://localhost:9898/crm/index
Chrome浏览器访问系统主页地址:http://localhost:9898/crm/main