日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码

發布時間:2024/3/24 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聯系人管理-客戶拜訪記錄| CRM客戶關系管理系統項目 實戰七(Struts2+Spring+Hibernate)解析+源代碼
客戶拜訪記錄的列表的顯示,
客戶拜訪記錄的保存,
客戶拜訪記錄查詢(條件搜索),
修改保存操作

一、客戶拜訪記錄的管理

1、客戶拜訪記錄需求的概述

一個系統的用戶(公司的業務員),業務員需要對客戶進行拜訪,對拜訪的過程進行記錄。業務員(用戶)和客戶(客戶)之間的關系(需要具體業務進行具體分析:一對多-公司產品比較單一,只允許一個業務員來對應多個客戶。多對多-一些大公司有不同的產品,不同產品下有不同的業務員都可以接觸到同一個客戶,一個客戶也可以對應多業務員)。大部分情況習慣與創建為多對多的。

2、多對多建表原則

  • 創建中間表,中間表當中至少兩個字段,分別作為外鍵指向多對多雙方的各自的主鍵。

二、客戶拜訪記錄的準備工作

1、創建表

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` datetime 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;

2、創建實體和映射

  • 創建實體
    在SaleVisit當中配置屬性并設置客戶對象以及對應的用戶
  • 創建映射SaleVisit.hbm.xml文件當中設置多對一的映射關系
<?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.itzheng.crm.domain.SaleVisit" table="sale_vist"> <id name="visit_id" column="visit_id"><generator class="uuid"> </generator></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.itzheng.crm.domain.Customer" column="visit_cust_id"></many-to-one> <!-- 配置與用戶的關聯關系 --><many-to-one name="user" class="com.itzheng.crm.domain.User" column="visit_user_id"/></class> </hibernate-mapping>
  • 將實體交給Spring管理,在appliactionContext.xml當中配置對應

3、創建相關的類

SaleVisitDao

SaleVisitDaoImpl

創建SaleVisitAction,并注入SaleVisit

package com.itzheng.crm.web.action; import com.itzheng.crm.domain.SaleVisit; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /*- 客戶拜訪記錄的Action的類*/ public class SaleVisitAction extends ActionSupport implements ModelDriven<SaleVisit> {private SaleVisit saleVisit = new SaleVisit();@Overridepublic SaleVisit getModel() {// TODO Auto-generated method stubreturn saleVisit;} }

4、將相關的類進行配置

  • Bean管理交給Spring的XML
  • 屬性注入使用注解方式
(1)在applicationContext.xml當中開啟屬性注入

  • 將saleVisitAction和saleVisitService和saleVisitDao交給Spring管理
(2)在要注入類當中設置標簽@Resource(name="")

在action當中注入service

在service層注入DAO

三、客戶拜訪記錄的列表的顯示

1、修改menu.jsp的提交訂單路徑

2、編寫Action的findAll的方法

在SaleVisitAction

3、編寫service

SaleVisitServiceImpl

package com.itzheng.crm.service.impl; import java.util.List; import javax.annotation.Resource; import org.hibernate.criterion.DetachedCriteria; import com.itzheng.crm.dao.SaleVisitDao; import com.itzheng.crm.domain.PageBean; import com.itzheng.crm.domain.SaleVisit; import com.itzheng.crm.service.SaleVisitService; /*- 客戶拜訪記錄的業務層的接口*/ public class SaleVisitServiceImpl implements SaleVisitService {// 注入客戶拜訪記錄的DAO:@Resource(name = "saleVisitDao")private SaleVisitDao saleVisitDao;@Override// 業務層分頁顯示拜訪記錄的方法:public PageBean<SaleVisit> findByPage(DetachedCriteria detachedCriteria, Integer currPage, Integer pageSize) {PageBean<SaleVisit> pageBean = new PageBean<SaleVisit>();// 設置當前頁數pageBean.setCurrPage(currPage);// 設置每一頁顯示的記錄數pageBean.setPageSize(pageSize);// 設置總的記錄數Integer totalCount = saleVisitDao.findCount(detachedCriteria);pageBean.setTotalCount(totalCount);// 設置總頁數:double tc = totalCount;Double num = Math.ceil(tc / pageSize);// 設置總頁數:pageBean.setTotalPage(num.intValue());// 設置每一頁所顯示的數據的集合Integer begin = (currPage - 1) * pageSize;List<SaleVisit> list = saleVisitDao.findByPage(detachedCriteria, begin, pageSize); pageBean.setList(list);return pageBean;} }

4、在頁面上進行顯示

(1)配置struts.xml

(2)在創建salevisit并創建list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ taglib uri="/struts-tags" prefix="s" %> <html> <head> <TITLE>客戶拜訪記錄列表</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK href="${pageContext.request.contextPath }/css/Style.css" type=text/css rel=stylesheet> <LINK href="${pageContext.request.contextPath }/css/Manage.css" type=text/cssrel=stylesheet> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <SCRIPT language=javascript>function to_page(page){if(page){$("#page").val(page);}document.customerForm.submit();} </SCRIPT> <META content="MSHTML 6.00.2900.3492" name=GENERATOR> </HEAD> <BODY><FORM id="customerForm" name="customerForm"action="${pageContext.request.contextPath }/saleVisit_findAll.action"method=post><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_019.jpg"border=0></TD><TD width="100%" background="${pageContext.request.contextPath }/images/new_020.jpg"height=20></TD><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_021.jpg"border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15 background="${pageContext.request.contextPath }/images/new_022.jpg"><IMGsrc="${pageContext.request.contextPath }/images/new_022.jpg" border=0></TD><TD vAlign=top width="100%" bgColor=#ffffff><TABLE cellSpacing=0 cellPadding=5 width="100%" border=0><TR><TD class=manageHead>當前位置:客戶拜訪記錄管理 &gt; 客戶拜訪記錄列表</TD></TR><TR><TD height=2></TD></TR></TABLE><TABLE borderColor=#cccccc cellSpacing=0 cellPadding=0width="100%" align=center border=0><TBODY><TR><TD height=25><TABLE cellSpacing=0 cellPadding=2 border=0><TBODY><TR><TD>聯系人名稱:</TD><TD><s:textfield theme="simple" name="lkm_name" cssClass="textbox" cssStyle="WIDTH: 80px" maxLength="50"/><TD> <TD>聯系人性別:</TD><TD><s:select theme="simple" name="lkm_gender" list="#{'1':'男','2':'女'}" headerKey="" headerValue="-請選擇-"/><TD> <INPUT class=button id=sButton2 type=submit value="篩選 " name=sButton2></TD></TR></TBODY></TABLE></TD></TR> <TR><TD><TABLE id=gridstyle="BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-LEFT-COLOR: #cccccc; BORDER-BOTTOM-WIDTH: 0px; BORDER-BOTTOM-COLOR: #cccccc; WIDTH: 100%; BORDER-TOP-COLOR: #cccccc; FONT-STYLE: normal; BACKGROUND-COLOR: #cccccc; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: #cccccc"cellSpacing=1 cellPadding=2 rules=all border=0><TBODY><TRstyle="FONT-WEIGHT: bold; FONT-STYLE: normal; BACKGROUND-COLOR: #eeeeee; TEXT-DECORATION: none"><TD>業務員名稱</TD><TD>客戶名稱</TD><TD>拜訪時間</TD><TD>拜訪地點</TD><TD>拜訪詳情</TD><TD>下次拜訪時間</TD><TD>操作</TD></TR><s:iterator value="list"><TRstyle="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none"><TD><s:property value="user.user_name"/> </TD><TD><s:property value="customer.cust_name"/></TD><TD><s:date name="visit_time" format="yyyy-MM-dd"/></TD><TD><s:property value="visit_addr"/> </TD><TD><s:property value="visit_detail"/> </TD><TD><s:date name="visit_nexttime" format="yyyy-MM-dd"/></TD> <TD><a href="#">修改</a>&nbsp;&nbsp;<a href="#">刪除</a></TD></TR></s:iterator></TBODY></TABLE></TD></TR><TR><TD><SPAN id=pagelink><DIV style="LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right">[<B> <s:property value="totalCount" /></B>]條記錄,[<B><s:property value="totalPage" /> </B>],每頁顯示 <select name="pageSize" onchange="to_page()"><option value="3"<s:if test="pageSize == 3">selected</s:if>>3</option><option value="5"<s:if test="pageSize == 5">selected</s:if>>5</option><option value="10"<s:if test="pageSize == 10">selected</s:if>>10</option></select><s:if test="currPage != 1">[<A href="javascript:to_page(<s:property value="1" />)">首頁</A>] [<A href="javascript:to_page(<s:property value="currPage-1" />)">前一頁</A>] </s:if>&nbsp;&nbsp; <B> <s:iterator var="i" begin="1" end="totalPage"><s:if test="#i == currPage"><s:property value="#i" /></s:if><s:else><a href="javascript:to_page(<s:property value="#i" />)"><s:property value="#i" /></a></s:else></s:iterator></B>&nbsp;&nbsp;<s:if test="currPage != totalPage">[<A href="javascript:to_page(<s:property value="currPage+1" />)">后一頁</A>] [<A href="javascript:to_page(<s:property value="totalPage" />)">尾頁</A>] </s:if><input type="text" size="3" id="page" name="currPage" /><input type="button" value="Go" onclick="to_page()" /></DIV></SPAN></TD></TR></TBODY></TABLE></TD><TD width=15 background="${pageContext.request.contextPath }/images/new_023.jpg"><IMGsrc="${pageContext.request.contextPath }/images/new_023.jpg" border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_024.jpg"border=0></TD><TD align=middle width="100%"background="${pageContext.request.contextPath }/images/new_025.jpg" height=15></TD><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_026.jpg"border=0></TD></TR></TBODY></TABLE></FORM> </BODY> </HTML>
(3)測試

四、客戶拜訪記錄的保存

1、跳轉到添加保存頁面(修改menu.jsp的鏈接地址)

2、編寫Action中的saveUI方法

3、跳轉到添加頁面

  • 在struts2當中配置跳轉

4、在salevisit下的add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <TITLE>添加客戶拜訪記錄</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK href="${pageContext.request.contextPath }/css/Style.css" type=text/css rel=stylesheet> <LINK href="${pageContext.request.contextPath }/css/Manage.css" type=text/cssrel=stylesheet> <META content="MSHTML 6.00.2900.3492" name=GENERATOR> </HEAD> <BODY><s:form id="form1" name="form1" namespace="/" action="saleVisit_save" method="post" theme="simple"><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_019.jpg"border=0></TD><TD width="100%" background="${pageContext.request.contextPath }/images/new_020.jpg"height=20></TD><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_021.jpg"border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15 background=${pageContext.request.contextPath }/images/new_022.jpg><IMG src="${pageContext.request.contextPath }/images/new_022.jpg" border=0></TD><TD vAlign=top width="100%" bgColor=#ffffff><TABLE cellSpacing=0 cellPadding=5 width="100%" border=0><TR><TD class=manageHead>當前位置:客戶拜訪記錄管理 &gt; 添加客戶拜訪記錄</TD></TR><TR><TD height=2></TD></TR></TABLE><TABLE cellSpacing=0 cellPadding=5 border=0><tr><td>拜訪客戶:</td><td><select name="customer.cust_id" id="customer"><option value="">-請選擇-</option></select></td><td>業務員名稱:</td><td><select name="user.user_id" id="user"><option value="">-請選擇-</option></select></td></tr><TR><td>拜訪時間:</td><td><s:textfield cssClass="textbox" id="sChannel2" cssStyle="WIDTH: 180px" name="visit_time"/></td><td>拜訪地點:</td><td><s:textfield cssClass="textbox" id="sChannel2" cssStyle="WIDTH: 180px" maxlength="50" name="visit_addr"></s:textfield></td></TR><TR><td>拜訪詳情 :</td><td><s:textfield cssClass="textbox" id="sChannel2" cssStyle="WIDTH: 180px" maxlength="50" name="visit_detail"></s:textfield></td><td>下次拜訪時間:</td><td><s:textfield cssClass="textbox" id="sChannel2" cssStyle="WIDTH: 180px" maxlength="50" name="visit_nexttime"></s:textfield></td></TR><tr><td rowspan=2><INPUT class=button id=sButton2 type=submit value="保存 " name=sButton2></td></tr></TABLE> </TD><TD width=15 background="${pageContext.request.contextPath }/images/new_023.jpg"><IMG src="${pageContext.request.contextPath }/images/new_023.jpg" border=0></TD></TR></TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width="98%" border=0><TBODY><TR><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_024.jpg"border=0></TD><TD align=middle width="100%"background="${pageContext.request.contextPath }/images/new_025.jpg" height=15></TD><TD width=15><IMG src="${pageContext.request.contextPath }/images/new_026.jpg"border=0></TD></TR></TBODY></TABLE> </s:form> </BODY> </HTML>

5、在salevisit下的add.jsp

6、異步加載數據

7、修改頁面數據-異步加載客戶信息


8、編寫異步加載的Action

(1)CustomerAction


(2)CustomerAction

(3)UserAction


9、測試

10、客戶拜訪記錄的保存操作

(1)導入日期控件


(2)在salevisit下的add.jsp引入日期控件


設置對應標簽的ID并設置只讀屬性

(3)日期控件顯示的效果


11、編寫保存客戶信息的Action即Action的save方法

(1)編寫SaleVisitAction

(2)編寫SaleVisitServiceImpl的save方法

設置事務

(3)在struts.xml當中配置跳轉

五、客戶拜訪記錄查詢(條件搜索)

1、salevisit當中的list.jsp頁面上

(1)引入JQuery的日期控件

(2)修改搜索表單的屬性

2、SaleVisitAction當中的findAll方法當中組織添加條件

3、設置visit_end_time的get方法(因為visit_end_time不再棧當中)

設置get方法后就可以在頁面當中回顯

4、測試

六、修改保存操作

1、在salevisit下的list.jsp頁面上修改

2、在創建salevisit下創建edit.jsp頁面

直接復制add.jsp,修改回顯數據的下拉列表

3、在SaleVisitAction當中設置查詢所有的Customer和user對應的list

(1)通過屬性注入的方式注入service

(2)在SaleVisitAction下創建edit方法

(3)在struts.xml當中配置

4、測試

5、保存操作

(1)修改頁面salevisit的edit.jsp

設置提交的action和隱藏id屬性

(2)遍歷對應值棧當中的list集合以及對應的回顯的屬性

(3)在SaleVisitAction當中設置update方法

(4)在SaleVisitServiceImpl

(5)測試



總結

以上是生活随笔為你收集整理的联系人管理-客户拜访记录| CRM客户关系管理系统项目 实战七(Struts2+Spring+Hibernate)解析+源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。