## 基于Servlet+Mybatis+Bootstrap的客户关系管理系统CRM
### 逻辑介绍
- 用户可以通过市场活动来获取潜在客户,潜在客户可能在不久的将来为用户所在公司提供一笔利益,这笔利益在项目中称为交易(商机)
- 将一名潜在客户定义成一个线索,这是本项目的核心业务,潜在客户可以与公司取得联系,成为公司的伙伴,在这个过程中,潜在客户就变成了一位联系人,而潜在客户所在的公司,就成为了本公司的客户,进行贸易往来,而在线索转换中,也可以同时建立一笔交易,因为往往潜在客户都是通过第一笔交易而成为公司的客户的
- 在市场活动、线索、联系人、客户、交易的详细页面中,均有对应的备注,用户可在相应页面进行适当备注(类似于备忘录)
### 功能介绍
1、市场活动
- 完善了市场活动的全部细节,包括市场活动的添加、修改、删除(支持批量)、查询(支持模糊查询,多条件动态查询),数据的分页展示,市场备注的增删改
2、线索
- 实现了创建线索,多条件动态查询线索,分页展示,修改和删除等功能与市场活动大体一致,就没有实现了,大体思路是差不多的,不过在删线索的时候应该连带着删除线索与它对应市场活动的关系。
- 线索与市场活动的关联在线索详细页中,通过搜索市场活动的名称(模糊查询)进行关联
- 说明一下线索模块的转换细节
- 前台传给后台一个线索的id,可以查询到具体的线索信息
- 根据该条线索可以取得客户名(公司名),若为空,那么新添客户
- 一个客户(公司)可以有多个联系人,故也应向数据库中新添联系人(联系人是在线索创建的时候写入的,故在线索写入时,需要向数据库中查询是否有该联系人的姓名,若已有该姓名,那么此条线索不能创建),这里发现了b站视频教程中的一个bug,原来视频中是没有这条逻辑的,那么如果新添了两条线索,联系人的姓名均是aaa的话,那么数据库中就会出现两条大致一样的记录,仅uuid不同)
- 线索转换后会被删除,连带着线索的备注一同删除,此时需要将线索的备注转换为联系人备注和客户的备注
- 将线索与市场活动的关系转换为联系人和市场活动的关系(多对多的转换),因为一个线索,可能同时来自多个市场活动(在线索详细页面可以关联市场活动),而一个市场活动,也会对应着许多条线索,因此是多对多关系。
- 若有交易记录,那么建立一笔交易,同时建立一条交易历史,(可在交易信息详细页中查看)
- 删除线索备注、删除线索和市场活动的关系,删除该条线索。
3、交易
- 在交易详细页中,用户可点击图标变更交易阶段(资质审查,需求分析...成交,丢失的线索,因竞争丢失),当时跟着老师敲,变更逻辑均写在jsp页面中,以达到异步刷新的效果,而这样写代码繁多,后期也不易于维护,我觉得更好的方式是将9个交易阶段写死,点击变更图标的时候向后台发请求,然后重新刷新页面,这样省事多了。
- 在交易详细页下方可查看该笔交易从创建以来的各个阶段历史信息。
## 应该注意的细节
- 对于数据字典的处理(即一些形式固定,不会改动的数据,而页面展示经常要用到的,放入全局作用域中存储),相当于一个缓存机制吧。
- ```
com.scnu.crm.web.listener.SystemInitListener
public class SystemInitListener implements ServletContextListener
web容器中,servlet,filter,listener都不是spring容器管理的,因此无法通过注入的方式获取对象
如:
@Autowired
private DicService ds;
采用这种方式,项目启动的时候就会报错
原因:
Listener的生命周期是由servlet容器(Tomcat)管理的,项目启动的时候SystemInitListener是由servlet容器实例化并调用
contextInitialized(ServletContextEvent sce)方法,但servlet容器不认识@Autoried注解,因此报错
但此处需要将数据字典放在ServletContext里面,就采取最原始的方法,先得到spring容器,然后通过getBean来获取
(WebApplicationContextUtils.getWebApplicationContext(application)).getBean(xxx.class)
```
- 设置拦截器后,拦截器会拦截静态资源(js,css,html,jpg)等,而不拦截jsp,在springmvc.xml中配置拦截器解决了静态资源的拦截问题
- ```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/settings/user/login.do"/>
<mvc:exclude-mapping path="/**/*.js"/>
<mvc:exclude-mapping path="/**/*.css"/>
<mvc:exclude-mapping path="/**/*.png"/>
<mvc:exclude-mapping path="/**/*.jpg"/>
<!--声明拦截器对象-->
<bean class="com.scnu.crm.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Servlet+Mybatis+Bootstrap的客户关系管理系统CRM源码+数据库+项目说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Servlet+Mybatis+Bootstrap的客户关系管理系统CRM源码+数据库+项目说明.zip (452个子文件)
ClueServiceImpl.class 9KB
ClueServiceImpl.class 9KB
ActivityController.class 9KB
ActivityController.class 9KB
ClueController.class 9KB
ClueController.class 9KB
TranController.class 8KB
TranController.class 8KB
ActivityServiceImpl.class 5KB
ActivityServiceImpl.class 5KB
TranServiceImpl.class 5KB
TranServiceImpl.class 5KB
Clue.class 4KB
Clue.class 4KB
Tran.class 4KB
Tran.class 4KB
Contacts.class 4KB
Contacts.class 4KB
UserController.class 3KB
UserController.class 3KB
Customer.class 3KB
Customer.class 3KB
User.class 3KB
User.class 3KB
SysInitListener.class 3KB
SysInitListener.class 3KB
DicServiceImpl.class 3KB
DicServiceImpl.class 3KB
UserServiceImpl.class 3KB
UserServiceImpl.class 3KB
ClueTest.class 2KB
Activity.class 2KB
Activity.class 2KB
LoginFilter.class 2KB
LoginFilter.class 2KB
PrintJson.class 2KB
PrintJson.class 2KB
TransactionInvocationHandler.class 2KB
TransactionInvocationHandler.class 2KB
ContactsRemark.class 2KB
CustomerRemark.class 2KB
ActivityRemark.class 2KB
ContactsRemark.class 2KB
CustomerRemark.class 2KB
ActivityRemark.class 2KB
TranHistory.class 2KB
TranHistory.class 2KB
ClueRemark.class 2KB
ClueRemark.class 2KB
SqlSessionUtil.class 2KB
SqlSessionUtil.class 2KB
MD5Util.class 1KB
MD5Util.class 1KB
ActivityService.class 1KB
ActivityService.class 1KB
ContactsActivityRelationTest.class 1KB
ActivityTest.class 1KB
DicValue.class 1KB
DicValue.class 1KB
EncodingFilter.class 1KB
EncodingFilter.class 1KB
CustomerServiceImpl.class 1KB
CustomerServiceImpl.class 1KB
PaginationVO.class 1KB
PaginationVO.class 1KB
ActivityDao.class 1KB
ActivityDao.class 1KB
ContactsActivityRelation.class 1005B
ContactsActivityRelation.class 1005B
ClueActivityRelation.class 981B
ClueActivityRelation.class 981B
DicType.class 943B
DicType.class 943B
LoginTest.class 761B
DateTimeUtil.class 721B
DateTimeUtil.class 721B
TranService.class 641B
TranService.class 641B
ServiceFactory.class 595B
ServiceFactory.class 595B
UUIDUtil.class 578B
UUIDUtil.class 578B
ActivityRemarkDao.class 537B
ActivityRemarkDao.class 537B
ClueService.class 470B
ClueService.class 470B
ClueActivityRelationDao.class 469B
ClueActivityRelationDao.class 469B
LoginException.class 467B
LoginException.class 467B
TranDao.class 445B
TranDao.class 445B
UserService.class 439B
UserService.class 439B
CustomerDao.class 432B
CustomerDao.class 432B
UserDao.class 422B
UserDao.class 422B
TranHistoryDao.class 382B
TranHistoryDao.class 382B
共 452 条
- 1
- 2
- 3
- 4
- 5
资源评论
土豆片片
- 粉丝: 1801
- 资源: 5647
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功