CRM前后端分离项目总结

本文总结了一个CRM项目的开发过程,项目历时3个半月,采用Vue、Spring和Shiro等技术。主要模块包括营销管理、客户管理、服务管理等,其中重点介绍了权限管理模块的设计与实现,如员工登录验证、角色分配及权限拦截功能。在开发中遇到了Shiro的options请求处理和登录后权限问题,并给出了相应的解决方案。
摘要由CSDN通过智能技术生成

当前版本:1.0 version
完成日期:2019/12/17

项目开发人员配置:

Java开发人员:5人;
前端开发人员:1人;
测试人员:1人;

项目完成使用时间:

历时3个半月

使用的开发工具:

ideal2019.1

项目开发环境:

Vue
element UI
spring:4.2.5.RELEASE
springmvc:4.2.5.RELEASE
shiro-all 1.4.0
MyBatis
apache-tomcat-8.0.41

日志功能版本:

org.slf4j:1.6.1

本系统为客户解决的问题:

客户关系管理系统用于管理与客户相关的信息与活动,包括企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交互和服务的过程。CRM不仅仅是一个软件,它是方法论、软件和IT能力综合,是商业策略。其最终目标是吸引新客户、保留老客户以及将已有客户转为忠实客户。

本系统的主要模块:

  1. 营销管理
  2. 客户管理
  3. 服务管理
  4. 基础数据
  5. 权限管理
  6. 统计报表
    另包括权限管理模块用于系统的用户、角色和相关权限。

各个功能模块介绍

模块 功能名称 描述
营销管理 营销管理模块包含潜在客户的管理和对客户开发过程的管理。营销的过程是开发新客户的过程。对老客户的销售行为不属于营销管理的范畴。市场专员有开发新客户的任务,在市场专员发现潜在客户时,应在系统中录入该潜在客户的信息。销售主管也可以在系统中创建潜在客户。所有的潜在客户由销售主管进行分配,每个潜在客户分配给一个市场专员。市场专员对分配给自己的潜在客户制定客户开发计划,计划好分几步开发,以及每个步骤的时间和具体事项。制定完客户开发计划后,市场专员按实际执行请跨功能填写计划中每个步骤的执行效果。在开发计划结束的时候,根据开发的结果不同,设置该潜在客户为“开发失败”或“开发成功”。如果开发客户成功,系统自动创建新的客户记录。
营销管理 潜在客户管理 可以直接使用客户表,然后通过额外添加的状态字段来区分是客户,还是潜在客户收集将会为公司创造收益的潜在客户,在分配给市场专员后,可以根据潜在客户开发计划的实施,把潜在客户转换为正式客户。
营销管理 客户开发计划 对“已指派”的潜在客户制定开发计划,执行开发计划,并记录执行结果。客户开发成功还将创建新的客户记录
客户管理 客户信息是公司资产的构成部分之一,应对其进行妥善保管、充分利用。每个市场专员有责任维护自己负责的客户信息,随时更新。在本系统中,客户信息将得到充分的共享,从而发挥最大的价值。客户是由潜在客户升级变过来的,可以再客户表里面添加一个字段,不同字段代表不同状态的客户
客户信息管理 市场专员对收集客户详细信息的模块,用于分析客户的来源、喜好等信息,以便更好的跟进客户.
客户跟进历史 收集客户资料是一个漫长的过程,通过客户跟进模块记录下收集资料的每个细节
客户移交记录 公司管理人员,如市场部经理,可以根据实际情况,强制把客户从一个市场专员手里交给另一个市场专员。在公司中,员工持有的客户信息,很可能会涉及到绩效,所以对客户市场专员的修改要添加控制,记录下移交的原因细节。这个操作可以在独立的移交模块中移交,也可以在客户界面快速移交。
客户资源池管
若依框架是一个用于Web应用程序的管理系统,可以用于各种应用程序,如网站管理后台、网站会员中心、CMS、CRM和OA等。该框架提供了一套完整的用户管理功能,包括用户登录、权限验证等。在用户登录验证方面,若依框架使用了springsecurity框架,并继承了UserDetailsService接口的loadUserByUsername(String username)方法来验证用户的身份。然而,由于项目需求中存在多张用户表的情况,需要对这个方法进行一些修改。 具体的修改方法可以在UserDetailsServiceImpl中进行,该类位于ryi-framework模块中的com.ruoyi.framework.web.service包下。在loadUserByUsername方法中,可以通过添加部分代码来解决多张用户表的问题。通过使用JSON将用户名和用户类型封装为一个字符串,然后在方法中解析出用户名,并使用该用户名进行用户的查询操作。 具体的修改代码如下: ```java @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 添加部分代码 NameHelper nameHelper = JSON.parseObject(username, NameHelper.class); username = nameHelper.getName(); // 添加部分代码 SysUser user = userService.selectUserByUserName(username); if (Validator.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { log.info("登录用户:{} 已被删除.", username); throw new BaseException("对不起,您的账号:" + username + " 已被删除"); } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { log.info("登录用户:{} 已被停用.", username); throw new BaseException("对不起,您的账号:" + username + " 已停用"); } return createLoginUser(user); } ``` 通过以上的修改,若依框架可以满足多种用户登录的需求,并且尽量减少了对原框架的修改。同时,如果你对具体的修改步骤还有其他疑问,可以留言评论以便进一步讨论。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值