CRM的开发

news2025/7/17 12:22:19

开发步骤

  • 1.首页的开发
  • 2.由首页跳转到登陆页面
  • 3.用户登录
  • 4.记住密码实现
  • 5.安全退出
  • 6.登录验证
  • 7.创建市场活动
  • 8.分页查询市场活动
  • 9.删除市场活动
  • 10.修改市场活动
  • 11.批量导出市场活动
  • 12.导入市场活动
  • 13.查看市场活动明细
  • 14.添加市场活动备注
  • 15.删除市场活动备注
  • 16.修改市场活动备注
  • 17.线索(潜在客户)
  • 18.创建线索
  • 19.查看线索明细
  • 20.线索关联市场活动
  • 21.解除线索关联市场活动
  • 22.线索转换
  • 23.添加线索备注
  • 24.删除线索备注
  • 25.修改线索备注
  • 26.创建交易
  • 27.可能性的可配置
  • 28.分页显示交易列表
  • 29.查看交易明细
  • 30.实现显示交易的图标信息
  • 31.统计图表

1.首页的开发

(1)需求分析

用户访问首页,进入登录页面

(2)分析与设计

客户端    ---发送url请求--->    IndexController    ---跳转到--->  index.jsp    ---先在tomcat上运行,
然后将页面返回给客户端

2.由首页跳转到登陆页面

首页打开时,通过window.location向登录页面发送请求,UserController接收到请求,转发到index.jsp,tomcat服务器运行结束后,
将html页面返回给浏览器

3.用户登录

(1)用户名密码不能为空
(2)用户名或者密码错误,用户已过期,用户状态被锁定,ip受限 都不能登录成功
(3)登录成功后,所有的业务页面显示当前用户的名称
(4)实现10天记住密码
(5)登录成功后跳转到主业务页面
(6)登录失败 页面不跳转,提示信息

4.记住密码实现

(1)
用户访问login.jsp --->  判断上次如果选择了记住密码,就自动填上账号和密码;否则不填

(2)
如何判断上次是否记住密码:
每次登录成功,就判断是否需要记住密码:如果需要记住密码,则往浏览器写cookie;否则不写
    cookie的值必须是该用户的账号和密码,如果这次登录不需要记住密码了,就需要删除之前的cookie
下次登录时,判断该用户有没有cookie:如果有就自动填写账户和密码,没有就不自动填写

5.安全退出

清空cookie,销毁session
退出完成后跳转到首页

6.登录验证

(1)登录验证的作用
为了保证系统业务管理的功能安全运行,用户访问任何业务资源都要进行登录验证

(2)使用拦截器实现登录验证
实现HandlerInterceptor方法

7.创建市场活动

给市场部人规划市场活动

用户点击市场活动,跳转到市场活动页面 ----> 跳转的时候需要同时查询出需要的动态数据

查询数据:需要service mapper层,查询所有的用户

用户点击创建按钮:填写完数据点击保存 ---> 异步请求,表单中所有的参数发送到后端 ---->
后端获取参数(实体类对象) ---> 执行sql语句保存创建的市场活动 ---> 根据处理结果,生成响应信息 --->
根据响应信息(0|1),解析json,渲染页面

正则表达式语法通则:
(1)//:定义一个正则表达式
(2)[]:表示匹配指定字符集中的一位字符
(3)^:匹配字符串的开头位置
    $:匹配字符串的结尾
(4){}:匹配次数   {m}:匹配m次    {m,n}:匹配m次到n次   {m,}:表示匹配m次或者更多次
(5)特殊符号:\d:匹配一位数字(相当于[0-9])    \D:匹配一位非数字    \w:匹配所有的字符   \W:匹配非字符
     *:匹配0次或者多次(相当于{0,})   +:匹配1次或者多次(相当于{1,})   ?:匹配0次或者1次

匹配26个字母:/^[a-z]$/     匹配0,1,2 ...9:/^[0-9]$/

8.分页查询市场活动

客户端发送查询请求(异步请求:查询条件,页号,每页显示条数) ---> 获取参数 封装参数 --->
根据参数查询市场活动 ---> 根据查询结果,生成响应信息 ---> 响应 ---> 解析JSON渲染页面

9.删除市场活动

用户选择要删除的市场活动 ---> 发送删除的异步请求(提交要删除的活动的id) ---> Controller层获取封装参数
---> 根据id删除市场活动 ---> 返回是否删除成功int ---> 根据处理结果生成响应信息 ---> 解析JSON响应

10.修改市场活动

用户选择要修改的市场活动 ---> 发送查询请求 异步请求(id) ---> Controller获取参数,调用service层方法
---> service调用mapper层方法查询数据 ---> 根据查询结果生成响应信息 ---> 返回一个JSON ---> 解析JSON渲染页面
---> 弹出要修改的市场活动的窗口 ---> 修改,点击更新按钮 ---> 发送异步请求(提交表单中所有的参数) ---> 
Controller获取封装参数 ---> 调用service层方法更新市场活动 --->  service调用mapper层方法执行sql语句 --->
根据处理结果,生成响应信息 ---> 解析JSON渲染页面

11.批量导出市场活动

给"批量导出"按钮添加单击事件,向后台发送请求(同步请求) ---> 查询所有的市场活动 ---> 
创建一个excel文件,并且将市场活动写入excel文件中---> 把生成的excel文件输出到浏览器(文件下载)

apache-poi插件

把办公文档的所有元素封装成普通的java类,我们可以操作这些类来操作办公文档
(1)行 --------------- HSSFRow
(2)列 --------------- HSSFCell
(3)页 --------------- HSSFSheet
(4)文件 ------------- HSSFWorkbook
(5)样式 ------------- HSSFCellStyle

使用apache-poi生成excel
(1)添加依赖
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.15</version>
    </dependency>
(2)使用封装类来生成excel文件

12.导入市场活动

把用户计算机上的excel文件上传到服务器(前端技术) ---> 解析excel文件来获取文件中的数据(后端技术)
--->将解析出来的数据添加到数据库 ---> 返回响应信息

13.查看市场活动明细

用户点击市场活动名称 ---> 发送同步请求(id) ---> Controller层获取参数 ---> 根据id查询详细信息
---> 根据id查询备注信息 ---> 把数据保存到request中 ---> 渲染页面 ---> 浏览器在工作区中显示详细信息页面

14.添加市场活动备注

用户在市场活动明细页面输入备注内容并点击保存按钮 ---> 浏览器发送异步请求(提交备注内容 市场活动id) --->
Controller层获取参数 封装参数(remark实体对象) ---> 调用service层 ---> 调用mapper层执行sql语句保存信息 --->
根据处理结果,生成响应信息 

15.删除市场活动备注

用户点击市场活动备注后边删除图标 ---> 发送异步请求(id) ---> Controller层封装参数,调用service层方法
---> 调用mapper层方法,执行SQL语句删除 ---> 根据处理结果,生成响应信息 ---> 解析JSON,渲染页面

16.修改市场活动备注

用户点击市场活动后边修改图标 ---> 获取备注的id和noteContent ---> 将备注的id和noteContent写到修改备注的模态窗口 
---> 弹出修改备注的模态窗口 ---> 用户填写表单 --->用户点击更新按钮 ---> 发送异步请求(id和noteContent) --->
Controller层获取参数,封装参数(实体类对象remark) ---> 调用service,调用mapper层执行SQL语句更新 ---> 根据处理结果
生成响应信息 ---> 解析JSON渲染页面

17.线索(潜在客户)

给销售部的人使用去发现客户,数据量大,每一条数据最详细 tbl_clue,有购买意向的客户转到客户

18.创建线索

客户端点击线索菜单 ---> 发送跳转的同步请求 ---> 调用UserService UserMapper 查询所有的用户 ---> 返回用户集合
调用DicValueService DicValueMapper 查询称呼数据字典值 ---> 返回称呼数据字典值的集合
查询线索状态数据字典值
查询线索来源数据字典值
将数据保存到request中 ---> 请求转发 ---> 从request中取出数据,渲染页面
点击创建按钮 ---> 填写表单发送异步请求 ---> Controller层获取参数封装参数 ---> 执行SQL语句创建 --->
返回响应信息 

19.查看线索明细

用户点击线索名称 ---> 发送同步请求(id) ---> Controller层获取参数,调用service层 mapper层执行SQL语句
查询线索备注明细 ---> 返回一个集合 ---> 将所有数据保存到request中返回 ---> 请求转发,从作用域中获取数据渲染页面

20.线索关联市场活动

用户点击关联市场活动窗口 ---> 弹出线索关联市场活动的模态窗口 ---> 用户输入搜索条件 ---> 每次键盘弹起 --->
发送搜索请求(异步请求:根据市场活动名称查询所有符合条件的hi市场活动,根据clueId查询已经关联过的市场活动(排除不显示))
---> Controller层获取参数封装参数 ---> 调用service层 mapper层 执行SQL语句 ---> 根据查询结果生成响应信息
---> 解析JSON显示相关市场活动
用户点击关联按钮 ---> 发送异步请求(activityId=xxx&activityId=xxx...&clueId=xxx) --->
Controller获取参数封装参数 ---> 调用service层 mapper层执行SQL语句批量保存线索和市场活动的关联信息
---> 根据处理结果,生成响应信息 ---> 解析JSON渲染页面 ---> 关联成功根据activityId查询数据库刷新列表 

21.解除线索关联市场活动

用户点击解除关联按钮 ---> 发送异步请求(activityId,clueId) ---> Controller层接收参数封装参数 --->
调用service层 mapper层方法执行SQL语句删除关联市场活动 ---> 根据处理结果生成响应信息 ---> 解析JSON

22.线索转换

点击转换按钮 ---> 发送同步请求(id) ---> ClueController获取参数 ---> 调用service层 mapper层方法执行SQL语句 --->
把数据保存到request作用域中 ---> 请求转发 ---> 从request中获取数据渲染页面 ---> 显示页面
还需要执行SQL语句查询交易的阶段

用户点击市场活动源的搜索按钮 ---> 弹出搜索市场活动的模态窗口 ---> 用户搜索市场活动 ---> 每次键盘谈起
---> 发送搜索请求 异步(activityName,clueId) ---> Controller层获取参数封装参数 Map ---> 
调用service层 mapper层方法执行SQL语句查询出市场活动 ---> 根据查询结果生成响应信息 ---> 解析JSON

用户选择市场活动 ---> 把市场活动id写道隐藏域中,把name写道输入框中 ---> 关闭市场活动模态窗口

用户点击线索转换按钮 ---> 发送异步请求(clueId,交易表单中的数据,是否创建交易的状态) ---> Controller层获取参数
封装参数map ---> 调用service层 调用mapper(多个mapper)层方法 ---> 查询出线索信息 ---> 把线索中有关公司的信息
转换到客户表 ---> 有关个人的信息转换到联系人表中 ---> 有关备注的信息转换到客户备注表中 ---> 有关备注的信息转换到
联系人备注表中 ---> 把该线索和市场活动的关联关系转换到联系人和市场活动的关联关系表 ---> 如果需要创建
交易,往交易表中添加一条数据 ---> 如果需要创建交易,将该线索下的备注信息转换到交易备注表中 ---> 删除该线索
下的所有备注 ---> 删除该线索和市场活动的关联关系 ---> 删除线索
上述需要在一个事务中完成,只要有出错的立即回滚
根据处理结果生成响应信息 ---> 

23.添加线索备注

用户在市场活动明细页面输入备注内容并点击保存按钮 ---> 浏览器发送异步请求(提交备注内容 市场活动id) --->
Controller层获取参数 封装参数(remark实体对象) ---> 调用service层 ---> 调用mapper层执行sql语句保存信息 --->
根据处理结果,生成响应信息 

24.删除线索备注

用户点击市场活动备注后边删除图标 ---> 发送异步请求(id) ---> Controller层封装参数,调用service层方法
---> 调用mapper层方法,执行SQL语句删除 ---> 根据处理结果,生成响应信息 ---> 解析JSON,渲染页面

25.修改线索备注

用户点击线索备注后边修改图标 ---> 获取备注的id和noteContent ---> 将备注的id和noteContent写到修改备注的模态窗口 
---> 弹出修改备注的模态窗口 ---> 用户填写表单 --->用户点击更新按钮 ---> 发送异步请求(id和noteContent) --->
Controller层获取参数,封装参数(实体类对象remark) ---> 调用service,调用mapper层执行SQL语句更新 ---> 根据处理结果
生成响应信息 ---> 解析JSON渲染页面

26.创建交易

用户点击交易按钮 ---> 同步请求(跳转到交易页面) ---> TranController 调用service层 mapper层方法执行SQL语句
查询交易类型 ---> 返回交易类型List
查询交易阶段 ---> 返回交易阶段List
调用service层方法查询交易来源 ---> 把上述查询到的数据保存到request作用域中 ---> 请求转发 ---> 获取数据渲染页面

用户点击创建按钮 ---> 发送同步请求跳转页面 ---> 执行SQL语句查询所有的用户,返回List
执行SQL语句查询交易的阶段,返回List
执行SQL语句查询交易类型,返回List
执行SQL语句查询交易来源,返回List  ---> 将这些list保存到request作用域中,请求转发
---> 跳转到创建交易的页面 ---> 解析数据响应页面

可能性的可配置:
用户选择阶段 ---> 发送异步请求(stage) ---> Controller获取参数 解析properties配置文件生成响应信息 --->
响应possibillity展示在页面

客户名称的自动补全:
用户输入客户名称 ---> 加一个键盘弹起事件 ---> 去后台模糊查询客户名称 ---> 返回调用插件自动补全

用户点击保存按钮 ---> 发送异步请求(表单中所有参数) ---> Controller获取参数 封装参数 map --->
调用service层方法 ---> 根据客户名称查询客户表中有没有该客户 ---> 当客户不存在时,调用insertCustomer保存客户
---> 当客户存在时直接使用客户id ---> 调用TranMapper保存创建的交易 ---> 根据处理结果生成响应信息 --->
解析JSON渲染页面
在保存交易的时候会将交易信息的重要信息保存到交易历史表中

27.可能性的可配置

根据用户选择的阶段来显示可能性
xxx.properties配置文件:适合配置数据简单,几乎没有冗余数据,效率高
xxx.xml配置文件:适合配置复杂数据,产生冗余数据,效率低

28.分页显示交易列表

每次进入页面将交易查询出来显示在页面,每次新建交易后也要显示该交易

29.查看交易明细

用户点击交易名称 ---> 发送同步请求(id) ---> 根据id查询交易的明细信息 ---> 查询交易备注的明细信息 --->
查询该交易下所有的历史信息 ,返回list --->将数据保存到request中 ---> 跳转到交易的明细页面 ---> 渲染页面

30.实现显示交易的图标信息

按照顺序查询交易所有的阶段stageList ---> 遍历stageList 显示每一个阶段对应的图标

31.统计图表

销售漏斗图:展示交易表中的数据
使用echarts这个插件来实现图表
用户点击交易统计图表菜单 ---> 发送同步请求 Controller层跳转到 transaction/index.jsp这个页面 --->
响应网页浏览器在工作区显示交易图表页面 ---> 当页面加载完成,向后台发送异步请求 ---> CharController 调用service层
mapper层方法执行SQL语句查询数据,返回一个List<实体类{阶段名称:数据量}> ---> 把数据传递给插件,插件
根据数据显示漏斗图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分分钟搭建出nginx的https服务

nginx添加https协议一、https是什么&#xff1f;二、创建步骤1.安装nginx2.创建证书三、验证四、浏览器访问在windows安装证书总结nginx 192.168.122.50一、https是什么&#xff1f; HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&…

分布式文件存储系统Minio,tuling,fox,p3 5:27

MinIO | 高性能&#xff0c;对Kubernetes友好的对象存储 一 分布式文件系统应用场景 fastDFS 缺点&#xff1a; 部署麻烦。因为文件名是自动生成的&#xff0c;所以如果要处理文件的话&#xff0c;还要经过额外的编码。Minio介绍 应用场景 互联网海量非结构化数据的存储需求…

Spring常见注解

普通CURD框架结构 1、controller 控制器&#xff08;注入服务&#xff09;用于标注控制层&#xff0c;相当于struts中的action层 2、service 服务&#xff08;注入dao&#xff09;用于标注服务层&#xff0c;主要用来进行业务的逻辑处理 3、repository/Mapper&#xff08;实…

25.前端笔记-CSS-溢出的文字省略号展示

1、单行文本溢出显示省略号 满足条件&#xff1a; &#xff08;1&#xff09;先强制一行内显示文本 white-space:nowrap;/*默认不写&#xff0c;或值是normal自动换行*/) &#xff08;2&#xff09;超出的部分隐藏 overflow:hidden; &#xff08;3&#xff09;文字用省略号代…

ESPnet-SE 开源工具介绍

下面是我们整理的钱彦旻教授、张王优、李晨达在第二届SH语音技术研讨会和第七届Kaldi技术交流会的报告内容&#xff0c;如果有误&#xff0c;欢迎指正。 基本情况 今天我们主要是围绕ESPnet-SE这个工具做一个简单的介绍&#xff0c;我会大概讲一下ESPnet-SE的情况&#xff0c;…

一文了解宏内核和微内核

【推荐阅读】 纯干货&#xff0c;linux内存管理——内存管理架构&#xff08;建议收藏&#xff09; 轻松学会linux下查看内存频率,内核函数,cpu频率 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 需要多久才能看完linux内核源码&#xff1f; 内核是操…

微信小程序第五篇:页面弹出效果及共享元素动画

系列文章传送门&#xff1a; 微信小程序第一篇&#xff1a;自定义组件详解 微信小程序第二篇&#xff1a;七种主流通信方法详解 微信小程序第三篇&#xff1a;获取页面节点信息 微信小程序第四篇&#xff1a;生成图片并保存到手机相册 目录 一、page-caontainer 实现假页弹出 …

LDP协议介绍

LDP介绍 1.LDP协议概述 LDP&#xff08;Label Distribution Protocol&#xff09;规定了标签分发过程中的各种消息以及相关的处理过程。LSR之间将依据本地转发表中对应于一个特定FEC的入标签、下一跳节点、出标签等信息联系在一起&#xff0c;从而形成标签交换路径LSP。 2.L…

【Python恶搞】Python实现祝福单身狗的恶搞项目,快发给你的怨种大兄弟 | 附源码

前言 halo&#xff0c;包子们上午好 咱就说&#xff0c;谁还没有一个单身的小伙伴呢 今天这个代码主要是为了祝福咱们单身的小伙伴 咱就说废话不多说&#xff0c;直接上才艺 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 公众号&#x…

Kali Linux 又更新了!202.4新版本有哪些变化?

Kali Linux在今年最后一个月迎来了新版本&#xff0c;即2022.4&#xff0c;上次更新是在8月份&#xff0c;时隔4个月&#xff0c;Kali linux 又有哪些新变化呢&#xff1f; 更新内容&#xff1a; Microsoft Azure - Kali 已添加到 Microsoft Azure&#xff0c;但目前没有图形…

阿里云效 ssh公钥配置

准备工作 通过 SSH 协议在 Git 命令行访问 Codeup&#xff0c;需要具备以下几点&#xff1a; 本机已安装Git&#xff08;安装教程参见安装Git&#xff09;并保证版本大于1.9&#xff08;通过git --version可获取本地的版本&#xff09;&#xff1b; 本机需要安装OpenSSH客户端…

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测 目录 智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测分类效果基本介绍模型参数程序设计参考资料分类效果 基本介绍 Bee-CNN蜜蜂算法优化卷积神经网络是一种模糊进化深度学习(优化权重和…

银行测试的优势在哪里?

为什么做金融类软件测试举个栗子&#xff0c;银行里的软件测试工程师。横向跟互联网公司里的测试来说&#xff0c;薪资相对稳定&#xff0c;加班少甚至基本没有&#xff0c;业务稳定。实在是测试类岗位中的香饽饽&#xff01;一、什么是金融行业金融业是指经营金融商品的特殊行…

液晶屏显示IC 可调式三通道TFT、LCD DC/DC升压转换器AAT1118 液晶面板双通道电荷泵电源IC AAT1118

液晶屏显示IC 可调式三通道TFT、LCD DC/DC升压转换器AAT1118 TFT LCD液晶面板双通道电荷泵电源IC AAT1118 概述 AAT1118集成了一个升压调节器&#xff0c;两个调节电荷泵&#xff0c;一个关闭功能&#xff0c;和一个开漏电源良好的输出&#xff0c;使其成为TFT液晶面板供电的…

逆行而上 光照前方 | 记“齐鲁之战”11月第一单签约者—郭群策

白玉兰品牌于2018年正式启航&#xff0c;白玉兰也与上海市花同名&#xff0c;作为国内四大名花之一&#xff0c;更具有品牌的标识性。品牌发展至今四年&#xff0c;三年是疫情期&#xff0c;但白玉兰酒店仍然成为目前锦江酒店&#xff08;中国区&#xff09;体系内发展最快的品…

Linux系统中裸机定时器的基本原理

大家好&#xff0c;今天的话主要和大家聊一聊&#xff0c;如何使用定时器&#xff0c;完成精准的定时功能实现​。 目录 第一​&#xff1a;EPIT定时器基本简介 ​第二&#xff1a;EPIT的基本配置 ​第三&#xff1a;代码的具体实现 第一​&#xff1a;EPIT定时器基本简介 ​…

【UE4】引擎配置文件原理学习笔记

刚好遇到一个ini加载的优化。趁此机会记录学习一下UE引擎的config文件层级结构和读取流程 文章目录两个问题层级结构文件读取流程初始化流程文件读取流程文件的写入配置文件内容和GConfig结构两个问题 在看项目目录结构的时候&#xff0c;有没有这样的疑问&#xff1a; 为什么…

喜报!泛睿云国家版权局颁发的软件著作权证书

近日,泛睿云自主研发的泛睿云计算服务平台V1.0,通过中国人民共和国国家版权局权威授权,获得了计算机软件著作权登记证书,这是对泛睿云实力和研发水平的充分肯定。 软件著作权是企业核心自主知识产权,是企业的“无形资产”,是企业科技的生命力和价值所在,国家权威部门的认证将使…

微信群裂变文案微信群裂变软件

看过前几篇文章的&#xff0c;想必多多少少都清楚微信群裂变以及朋友圈裂变能够带来的巨大能量&#xff1a;低成本获客&#xff0c;高质量传播。那今天就来分享微信群以及微信朋友圈裂变话术&#xff0c;满满都是干货&#xff0c;新手一定要看仔细咯。今天的内容主要讲的有三点…