CRM综合练习:客户拜访记录
客户拜访记录管理
客户拜访记录需求的概述
一个系统的用户(公司业务员),业务员需要对客户进行拜访,对拜访的过程进行记录。业务员(用户)和客户(客户)之间关系(需要具体业务具体分析:一对多—公司产品比较单一,只允许一个业务员对应多个客户。多对多—大公司有不同的产品,不同产品下有不同业务员都可以接触到同一个客户,一个客户可以对应多个业务员)。大部分情况创建成多对多。
- 多对多建表原则:
- 创建中间表,中间表中至少两个字段分别作为外键指向多对多双方的主键。

- 创建中间表,中间表中至少两个字段分别作为外键指向多对多双方的主键。
客户拜访记录的准备工作
创建表
CREATE TABLE `sale_visit` (
`visit_id` varchar(32) NOT NULL,
`visit_cust_id` bigint(32) DEFAULT NULL COMMENT '客户id',
`visit_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
`visit_time` datetime DEFAULT NULL COMMENT '拜访时间',
`visit_addr` varchar(128) DEFAULT NULL COMMENT '拜访地点',
`visit_detail` varchar(256) DEFAULT NULL COMMENT '拜访详情',
`visit_nexttime` date DEFAULT NULL COMMENT '下次拜访时间',
PRIMARY KEY (`visit_id`),
KEY `FK_sale_visit_cust_id` (`visit_cust_id`),
KEY `FK_sale_visit_user_id` (`visit_user_id`),
CONSTRAINT `FK_sale_visit_cust_id` FOREIGN KEY (`visit_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_sale_visit_user_id` FOREIGN KEY (`visit_user_id`) REFERENCES `sys_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建实体和映射
- 创建实体

- 创建映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lele.crm.domain.SaleVisit" table="sale_visit">
<id name="visit_id" column="visit_id">
<generator class="uuid"/>
</id>
<property name="visit_time" column="visit_time"/>
<property name="visit_addr" column="visit_addr"/>
<property name="visit_detail" column="visit_detail"/>
<property name="visit_nexttime" column="visit_nexttime"/>
<!-- 配置与客户的关联关系 -->
<many-to-one name="customer" class="com.lele.crm.domain.Customer" column="visit_cust_id"/>
<!-- 配置与用户的关联关系 -->
<many-to-one name="user" class="com.lele.crm.domain.User" column="visit_user_id"/>
</class>
</hibernate-mapping>
创建相关类
将相关类进行配置
- Bean管理交给Spring的XML
- 属性注入使用注解方式

客户拜访记录的列表显示
修改menu.jsp的提交路径

编写Action的findAll的方法

编写Service

在页面显示数据

客户拜访记录的保存
修改menu.jsp的链接地址

编写Action中的saveUI方法

跳转到添加页面

异步加载数据

编写Action的save方法

编写Service

客户拜访记录的条件查询
修改了Action的findAll的方法

权限拦截器
实现一个权限拦截器
编写类继承拦截器类

配置拦截器

SSH整合(纯注解)
搭建SSH注解开发的环境
第一步:创建web项目,引入jar包
- SSH整合的jar包
- Struts2的注解开发包:
- struts2-convention-plugin-2.3.24.jar ----Struts2的注解开发包。
第二步:引入配置文件
- web.xml
- Struts2的过滤器

- Struts2的过滤器
- Spring的监听器

- jdbc.properties
- log4j.properties
- applicationContext.xml
第三步:创建相关的包和类

第四步:引入相关页面
保存客户
第五步:编写Action的save方法

第六步:配置Action
- 在Spring中配置Action,Action交给Spring管理(使用注解方式)
- 开启组件扫描

- 在类上添加注解:

- 开启组件扫描
- 在struts中配置Action,Action负责处理请求和页面跳转

第七步:Action调用业务层
- Service交给Spring管理

- Action中注入Service

- 在Action的方法中调用业务层

第八步:在Service中调用DAO
- 将DAO交给Spring管理

- 在Service中注入DAO

第九步:创建实体和映射(映射使用的是注解)
- 现在映射使用注解实现(将表和类建立关系,将表中的字段和类中属性建立关系)

第十步:在Spring中整合Hibernate

第十一步:在DAO中使用模板
- 不能让DAO继承HibernateDaoSupport,因为属性注入不能使用注解方式。
- 自己在DAO中注入模板
- 定义Hibernate模板

- 注入模板

- 定义Hibernate模板
- 在DAO中使用模板完成保存

第十二步:配置事务管理
- 配置事务管理器
- 开启注解事务

- 在业务层添加注解


本文详细介绍了一种CRM系统中客户拜访记录模块的设计与实现,包括数据库表结构、实体映射、权限拦截器的实现及SSH整合过程,适用于企业级应用。
8548

被折叠的 条评论
为什么被折叠?



