这个基于SpringBoot的CRM客户关系管理系统是我最近完成的一个企业级应用开发项目。作为一个拥有多年Java开发经验的工程师,我深知传统CRM系统在企业运营中的重要性。这个系统采用了当前主流的技术栈组合,包括SpringBoot2、MyBatis、Freemarker、LayUI和ECharts等,为企业客户关系管理提供了一个轻量级但功能完备的解决方案。
系统主要包含五大核心模块:营销管理、客户管理、服务管理、统计报表和系统管理。每个模块都针对企业客户关系管理中的特定需求进行了精心设计。比如在客户管理模块中,我们实现了客户信息的全生命周期管理;在统计报表模块中,则利用ECharts提供了直观的数据可视化分析。
在技术选型上,我主要考虑了以下几个因素:
具体技术栈如下:
系统采用经典的三层架构:
这种分层设计使得系统各模块职责清晰,便于维护和扩展。特别是在处理复杂业务逻辑时,这种架构的优势更加明显。
营销管理模块主要处理销售机会和客户开发计划。核心功能包括:
java复制@GetMapping("/saleChanceList")
@ResponseBody
public Map<String, Object> querySaleChanceList(SaleChanceQuery saleChanceQuery) {
// 复杂的多条件查询逻辑
return saleChanceService.querySaleChanceByParams(saleChanceQuery);
}
这个接口实现了销售机会的多条件分页查询,前端通过LayUI的表格组件展示数据。
客户管理是CRM系统的核心,我们实现了:
java复制@PostMapping("/deleteCustomer")
@ResponseBody
public ResultInfo deleteCustomer(@RequestParam("ids") Integer[] ids) {
// 批量删除客户信息
customerService.deleteCustomerByIds(ids);
return new ResultInfo(200, "删除成功");
}
特别注意:在删除客户时,我们采用了逻辑删除而非物理删除,以保留历史数据。
服务管理模块处理客户服务请求的全流程:
每个环节都有严格的状态控制和权限校验。
利用ECharts的强大功能,我们实现了多种数据可视化:
java复制@GetMapping("/countCustomerMake")
@ResponseBody
public ResultInfo countCustomerMake() {
// 客户构成统计
List<Map<String, Object>> data = customerCountService.countCustomerMake();
return new ResultInfo(200, "查询成功", data);
}
系统实现了基于RBAC的权限控制:
java复制@Aspect
@Component
public class PermissionHandler {
// 权限校验切面
@Around("@annotation(requestCode)")
public Object checkPermission(ProceedingJoinPoint joinPoint, RequestCode requestCode) throws Throwable {
// 权限校验逻辑
}
}
sql复制CREATE DATABASE crm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
bash复制mysql -u root -p crm < crm.sql
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/crm?useSSL=false&serverTimezone=UTC
username: root
password: yourpassword
在logback.xml中配置日志路径:
xml复制<property name="LOG_HOME" value="/var/log/crm"/>
建议的部署方案:
mvn clean packagebash复制nohup java -jar crm-1.0.0.jar > crm.log 2>&1 &
问题现象:启动时报数据库连接失败
解决方案:
问题现象:Freemarker模板渲染出错
解决方案:
问题现象:无权限访问某些功能
解决方案:
在实际使用过程中,我发现以下几个优化点值得关注:
这个项目从技术选型到功能实现都经过精心设计,特别适合作为企业级应用的入门项目。我在开发过程中积累了不少实战经验,特别是在处理复杂业务逻辑和权限控制方面。对于想要学习SpringBoot企业级开发的同学,这个项目提供了很好的参考价值。