一、客户需求:
用户在线索明细页面,点击某一个"解除关联"按钮,弹出确认解除的窗口;
用户点击"确定"按钮,完成解除线索关联市场活动的功能.
*解除成功之后,刷新已经关联的市场活动列表
*解除失败,提示信息,列表也不刷新
二、功能实现
1.首先从底层开始编写代码,在com.it.crm.workbench.mapper.ClueActivityRelationMapper目录下编写代码,ClueActivityRelationMapper接口
详细代码如下所示
package com.it.crm.workbench.mapper;import com.it.crm.workbench.entity.ClueActivityRelation;import java.util.List;public interface ClueActivityRelationMapper {/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/int deleteByPrimaryKey(String id);/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/int insert(ClueActivityRelation record);/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/int insertSelective(ClueActivityRelation record);/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/ClueActivityRelation selectByPrimaryKey(String id);/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/int updateByPrimaryKeySelective(ClueActivityRelation record);/*** This method was generated by MyBatis Generator.* This method corresponds to the database table tbl_clue_activity_relation** @mbggenerated Fri Jul 29 14:06:01 CST 2022*/int updateByPrimaryKey(ClueActivityRelation record);/*** 批量保存线索和市场活动的关联关系* @param list* @return*/int insertClueActivityRelationByList(List<ClueActivityRelation> list);/*** 根据clueId和activityId删除线索和市场活动的关联关系* @return*/int deleteClueActivityRelationByClueIdActivityId(ClueActivityRelation clueActivityRelation);/*** 根据clueId来查询线索和市场活动的关联关系* @param clueId* @return*/List<ClueActivityRelation> selectClueActivityRelationByClueId(String clueId);/*** 根据clueId来删除线索和市场活动的关联关系* @param clueId* @return*/int deleteClueActivityRelationByClueId(String clueId);}
2.ClueActivityRelationMapper.xml文件
详细代码如下所示
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.it.crm.workbench.mapper.ClueActivityRelationMapper" ><resultMap id="BaseResultMap" type="com.it.crm.workbench.entity.ClueActivityRelation" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.--><id column="id" property="id" jdbcType="CHAR" /><result column="clue_id" property="clueId" jdbcType="CHAR" /><result column="activity_id" property="activityId" jdbcType="CHAR" /></resultMap><sql id="Base_Column_List" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->id, clue_id, activity_id</sql><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->select <include refid="Base_Column_List" />from tbl_clue_activity_relationwhere id = #{id,jdbcType=CHAR}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.String" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->delete from tbl_clue_activity_relationwhere id = #{id,jdbcType=CHAR}</delete><insert id="insert" parameterType="com.it.crm.workbench.entity.ClueActivityRelation" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->insert into tbl_clue_activity_relation (id, clue_id, activity_id)values (#{id,jdbcType=CHAR}, #{clueId,jdbcType=CHAR}, #{activityId,jdbcType=CHAR})</insert><insert id="insertSelective" parameterType="com.it.crm.workbench.entity.ClueActivityRelation" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->insert into tbl_clue_activity_relation<trim prefix="(" suffix=")" suffixOverrides="," ><if test="id != null" >id,</if><if test="clueId != null" >clue_id,</if><if test="activityId != null" >activity_id,</if></trim><trim prefix="values (" suffix=")" suffixOverrides="," ><if test="id != null" >#{id,jdbcType=CHAR},</if><if test="clueId != null" >#{clueId,jdbcType=CHAR},</if><if test="activityId != null" >#{activityId,jdbcType=CHAR},</if></trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.it.crm.workbench.entity.ClueActivityRelation" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->update tbl_clue_activity_relation<set ><if test="clueId != null" >clue_id = #{clueId,jdbcType=CHAR},</if><if test="activityId != null" >activity_id = #{activityId,jdbcType=CHAR},</if></set>where id = #{id,jdbcType=CHAR}</update><update id="updateByPrimaryKey" parameterType="com.it.crm.workbench.entity.ClueActivityRelation" ><!--WARNING - @mbggeneratedThis element is automatically generated by MyBatis Generator, do not modify.This element was generated on Fri Jul 29 14:06:01 CST 2022.-->update tbl_clue_activity_relationset clue_id = #{clueId,jdbcType=CHAR},activity_id = #{activityId,jdbcType=CHAR}where id = #{id,jdbcType=CHAR}</update><insert id="insertClueActivityRelationByList" parameterType="com.it.crm.workbench.entity.ClueActivityRelation">insert into tbl_clue_activity_relation(id,clue_id,activity_id)values<foreach collection="list" item="obj" separator=",">(#{obj.id},#{obj.clueId},#{obj.activityId})</foreach></insert><delete id="deleteClueActivityRelationByClueIdActivityId" parameterType="com.it.crm.workbench.entity.ClueActivityRelation">delete from tbl_clue_activity_relationwhere clue_id=#{clueId} and activity_id=#{activityId}</delete><select id="selectClueActivityRelationByClueId" parameterType="string" resultMap="BaseResultMap">
select id, clue_id, activity_id
from tbl_clue_activity_relation
where clue_id=#{clueId}</select><delete id="deleteClueActivityRelationByClueId" parameterType="string">delete from tbl_clue_activity_relationwhere clue_id=#{clueId}</delete></mapper>
3.编写服务层代码
ClueActivityRelationService类
package com.it.crm.workbench.service;import com.it.crm.workbench.entity.ClueActivityRelation;import java.util.List;public interface ClueActivityRelationService {int saveCreateClueActivityRelationByList(List<ClueActivityRelation> list);int removeClueActivityRelationByClueIdActivityId(ClueActivityRelation clueActivityRelation);
}
4.在ClueController类中编写控制层方法
@RequestMapping(value = "/workbench/clue/removeBind.do")@ResponseBodypublic Object removeBind(ClueActivityRelation clueActivityRelation){ReturnObject returnObject=new ReturnObject();try {//调用service层方法,删除线索和市场活动的关联关系int i = clueActivityRelationService.removeClueActivityRelationByClueIdActivityId(clueActivityRelation);//根据返回信息,生成响应信息if (i>0){returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);}else {returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);returnObject.setMessage("系统忙,请稍后重试!");}}catch (Exception e){e.printStackTrace();returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);returnObject.setMessage("系统忙,请稍后重试!");}return returnObject;}
5.进入clue目录下的detail.jsp
//给所有的“解除关联”按钮添加单击事件$("#relationTbody").on("click","a",function () {//收集参数var activityId=$(this).attr("activityId");var clueId="${clue.id}";if (window.confirm("确认删除吗?")){//发送请求$.ajax({url:"workbench/clue/removeBind.do",type:'post',data:{activityId:activityId,clueId:clueId},dataType:'json',success:function (data) {if (data.code=="1"){//删除数据项,并刷新数据$("#tr_"+activityId).remove();}else {alert(data.message);}}});}});
6.测试功能
这是数据库中原本有的3条数据
选择一个市场活动点击解除关联
点击确认后,市场活动删除成功
进入到数据库表中查看数据,只剩下两条数据
功能实现成功