乐趣区

关于java:Crm第一天

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 则偏重于数据分析。

企业我的项目开发流程

  1. 产品组依据市场调研或商户共事的反馈提出 idea, 设计出原型而后跟市场, 商户共事进行确认
  2. UI 设计组和开发组一起探讨, 确定计划是否可行
  3. UI 组依据产品组提供的原型稿做出设计稿, 与产品和开发确认
  4. 开发组依据产品的原型稿 (看逻辑) 和 UI 组的设计稿 (看界面) 编写代码其中当然也会来回跟设计, 产品同学进行确认和沟通
  5. 代码编写结束后提交给测试组. 而后再提交上线
  6. 前期的数据跟踪和优化

    ​ 这就是一个产品研发的大抵流程. 其中开发的责任就是选用适合的框架技术来实现产品所提供的需要以及设计所提供的成果。

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) 可空 实在姓名
email 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);
    }
}
退出移动版