客户需求:
用户在交易主页面,点击”创建”按钮,跳转到创建交易的页面;
用户在创建交易的页面填写表单,点击”保存”按钮,完成创建交易的功能。
*所有者、阶段、类型、来源 都是动态的
*市场活动源是可搜索的
*联系人也是可搜索的
*可能性是可配置的
*客户名称支持自动补全
*表单验证
*保存成功之后,跳转到交易主页面
*保存失败,提示信息,页面不跳转
功能实现:
一、创建交易
1.调用了3个mapper层
1)CustomerMapper接口
CustomerMapper.xml文件
<select id="selectCustomerByName" parameterType="string" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from tbl_customer
where name =#{name}
</select>
<insert id="insertCustomer" parameterType="com.it.crm.workbench.entity.Customer">
insert into tbl_customer(id, owner, name, website, phone, create_by, create_time, contact_summary,next_contact_time, description, address)
values (#{id},#{owner},#{name},#{website},#{phone},#{createBy},#{createTime},#{contactSummary},#{nextContactTime},#{description},#{address})
</insert>
2)TranMapper接口
TranMapper.xml
<insert id="insertTran" parameterType="com.it.crm.workbench.entity.Tran">
insert into tbl_tran(id, owner, money, name, expected_date, customer_id, stage, type, source, activity_id,
contacts_id, create_by, create_time, description, contact_summary,next_contact_time)
values (#{id},#{owner},#{money},#{name},#{expectedDate},#{customerId},#{stage},#{type},#{source},#{activityId},
#{contactsId},#{createBy},#{createTime},#{description},#{contactSummary},#{nextContactTime})
</insert>
3)TranHistory接口
TranHistory.xml文件
<insert id="insertTranHistory" parameterType="com.it.crm.workbench.entity.TranHistory">
insert into tbl_tran_history(id, stage, money, expected_date, create_time, create_by, tran_id)
values (#{id},#{stage},#{money},#{expectedDate},#{createTime},#{createBy},#{tranId})
</insert>
2.调用service层
TranService接口
TranServiceImpl实现类
@Override
public void saveCreateTransaction(Map<String, Object> map) {
String customerName = (String) map.get("customerName");
User user = (User) map.get(Contants.SESSION_USER);
//根据name,精确查询客户
Customer customer = customerMapper.selectCustomerByName(customerName);
//判断客户是否存在,如果客户不存在,则新建用户
if (customer==null){
customer=new Customer();
customer.setOwner(user.getId());
customer.setName(customerName);
customer.setId(UUIDUtils.getUUID());
customer.setCreateTime(DateUtils.formateDateTime(new Date()));
customer.setCreateBy(user.getId());
customerMapper.insertCustomer(customer);
}
//保存创建的交易
Tran tran=new Tran();
tran.setStage((String) map.get("stage"));
tran.setOwner((String) map.get("owner"));
tran.setNextContactTime((String) map.get("nextContactTime"));
tran.setName((String) map.get("name"));
tran.setMoney((String) map.get("money"));
tran.setId(UUIDUtils.getUUID());
tran.setExpectedDate((String) map.get("expectedDate"));
tran.setCustomerId(customer.getId());
tran.setCreateTime(DateUtils.formateDateTime(new Date()));
tran.setCreateBy(user.getId());
tran.setContactSummary((String) map.get("contactSummary"));
tran.setContactsId((String) map.get("contactsId"));
tran.setActivityId((String) map.get("activityId"));
tran.setDescription((String) map.get("description"));
tran.setSource((String) map.get("source"));
tran.setType((String) map.get("type"));
tranMapper.insertTran(tran);
//保存交易历史
TranHistory tranHistory=new TranHistory();
tranHistory.setCreateBy(user.getId());
tranHistory.setCreateTime(DateUtils.formateDateTime(new Date()));
tranHistory.setExpectedDate(tran.getExpectedDate());
tranHistory.setId(UUIDUtils.getUUID());
tranHistory.setMoney(tran.getMoney());
tranHistory.setStage(tran.getStage());
tranHistory.setTranId(tran.getId());
tranHistoryMapper.insertTranHistory(tranHistory);
}
3.调用controller层
@RequestMapping("/workbench/transaction/saveCreateTran.do")
@ResponseBody
public Object saveCreateTran(@RequestParam Map<String,Object> map, HttpSession session){
//封装参数
map.put(Contants.SESSION_USER,session.getAttribute(Contants.SESSION_USER));
ReturnObject returnObject=new ReturnObject();
try{
//调用service层方法,保存创建的交易
tranService.saveCreateTransaction(map);
returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
}catch (Exception e){
e.printStackTrace();
returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
returnObject.setMessage("系统忙,请稍后重试!");
}
return returnObject;
}
save.jsp页面
//给保存按钮添加单击事件
$("#createTransactionBtn").click(function () {
//收集参数
var owner=$("#create-transactionOwner").val();
var money=$.trim($("#create-amountOfMoney").val());
var name=$.trim($("#create-transactionName").val());
var expectedDate=$("#create-expectedClosingDate").val();
var customerName=$.trim($("#create-accountName").val());
var stage=$("#create-transactionStage").val();
var type=$("#create-transactionType").val();
var source =$("#create-clueSource").val();
var activityId=$("#create-activitySrc").val();
var contactsId=$("#create-contactsName").val();
var description=$.trim($("#create-describe").val());
var contactSummary=$.trim($("#create-contactSummary").val());
var nextContactTime=$("#create-nextContactTime").val();
//表单验证
if (owner=="" ) {
alert("所有者不能为空!");
return;
}
if (name==""){
alert("名称不能为空!");
return;
}
if (expectedDate==""){
alert("预计成交日期不能为空!");
return;
}
if (customerName==""){
alert("客户名称不能为空!");
return;
}
if (stage==""){
alert("阶段不能为空!")
return;
}
//发送请求
$.ajax({
url:'workbench/transaction/saveCreateTran.do',
type:'post',
dataType:'json',
data:{
owner:owner,
money:money,
name:name,
expectedDate:expectedDate,
customerName:customerName,
stage:stage,
type:type,
source:source,
activityId:activityId,
contactsId:contactsId,
description:description,
contactSummary:contactSummary,
nextContactTime:nextContactTime
},
success:function (data) {
if (data.code==1){
//跳转到交易主页面
window.location.href="workbench/transaction/index.do";
}else {
alert(data.message)
}
}
});
});
二、查找交易
TranMapper接口
TranMapper.xml文件
<select id="selectAllTran" resultMap="BaseResultMap">
select
tt.id, u1.name as owner, tt.money, tt.name, tt.expected_date,tc.name as customer_id,
tdv.value as stage,tdv2.value as type,tdv3.value as source,ta.name as activity_id,
tc1.fullname as contacts_id,u2.name as create_by, tt.create_time,u3.name as edit_by, tt.edit_time,
tt.description, tt.contact_summary,tt.next_contact_time
from tbl_tran tt
join tbl_user u1 on tt.owner=u1.id
join tbl_customer tc on tt.customer_id=tc.id
join tbl_dic_value tdv on tt.stage=tdv.id
left join tbl_dic_value tdv2 on tt.type=tdv2.id
left join tbl_dic_value tdv3 on tt.source=tdv3.id
left join tbl_activity ta on tt.activity_id=ta.id
join tbl_contacts tc1 on tt.contacts_id=tc1.id
join tbl_user u2 on tt.create_by=u2.id
left join tbl_user u3 on tt.edit_by=u3.id
</select>
TranService接口
TranServiceImpl实现类
TransactionController类
@RequestMapping("/workbench/transaction/index.do")
public String index(HttpServletRequest request){
List<Tran> trans = tranService.queryAllTran();
request.setAttribute("trans",trans);
//返回交易主页面
return "workbench/transaction/index";
}
index.jsp
<table class="table table-hover">
<thead>
<tr style="color: #B3B3B3;">
<td><input type="checkbox" /></td>
<td>名称</td>
<td>客户名称</td>
<td>阶段</td>
<td>类型</td>
<td>所有者</td>
<td>来源</td>
<td>联系人名称</td>
</tr>
</thead>
<tbody>
<c:forEach items="${trans}" var="tran">
<tr>
<td><input type="checkbox" /></td>
<td><a style="text-decoration: none; cursor: pointer;" onclick="window.location.href='detail.html';">${tran.name}</a></td>
<td>${tran.customerId}</td>
<td>${tran.stage}</td>
<td>${tran.type}</td>
<td>${tran.owner}</td>
<td>${tran.source}</td>
<td>${tran.contactsId}</td>
</tr>
</c:forEach>
</tbody>
</table>