大约 2 分钟
1.退回公海 🚩
2.1 编写控制层
/**
* 退回公海
* @param id
* @param reason
* @return
*/
@PreAuthorize("@ss.hasPermi('business:business:back')")
@Log(title = "退回公海", businessType = BusinessType.UPDATE)
@PutMapping("/back/{id}/{reason}")
public AjaxResult back(@PathVariable("id") Long id, @PathVariable("reason")String reason)
{
return AjaxResult.success(tbBusinessService.backPool(id,reason));
}
2.2 编写Service层
ITbBusinessService
/**
* 退回公海
* @param busniessId
* @param reason
* @return
*/
public int backPool(Long busniessId,String reason);
TbBusinessServiceImpl
@Override
public int backPool(Long busniessId,String backReason) {
TbBusiness business = selectTbBusinessById(busniessId);
// 退回公海原因
TbBusinessTrackRecord trackRecord = new TbBusinessTrackRecord();
//设置退回操作者
trackRecord.setCreateBy(SecurityUtils.getUsername());
// 获得退回的原因
trackRecord.setRecord(dictDataMapper.selectDictLabel("reasons_for_business_reporting",backReason));
//设置商机的id和时间
trackRecord.setBusinessId(busniessId);
trackRecord.setCreateTime(DateUtils.getNowDate());
// 记录一条记录
tbBusinessTrackRecordMapper.insertTbBusinessTrackRecord(trackRecord);
//更新商机的状态
return updateStatus(business.getId(),TbClue.StatusType.FALSE.getValue());
}
2.3 编写Mapper层
TbBusinessMapper
/**
* 查询商机
*
* @param id 商机ID
* @return 商机
*/
public TbBusiness selectTbBusinessById(Long id);
/**
* 跟新商机的状态和时间
* @param id
* @param status
* @return
*/
public int resetNextTimeAndStatus(@Param("id") Long id, @Param("status") String status);
TbBusinessMapper.xml
<!-- sql片段 -->
<sql id="selectTbBusinessVo">
select id, name, phone, channel, activity_id, provinces, city, sex, age, weixin, qq, level, subject, course_id, create_by, create_time, occupation, education, job, salary, major,
expected_salary, reasons, plan, plan_time, other_intention, next_time, status from tb_business
</sql>
<!-- 通过id查询 -->
<select id="selectTbBusinessById" parameterType="Long" resultMap="TbBusinessResult">
<include refid="selectTbBusinessVo"/>
where id = #{id}
</select>
<!-- 修改状态 -->
<update id="resetNextTimeAndStatus">
update tb_business set next_time=null, status=#{status} where id = #{id}
</update>
2.伪线索 🚩
2.1 设计VO对象
package com.huike.clues.domain.vo;
public class FalseClueVo {
private String reason;
private String remark;
// 自行补充get set方法
}
2.2 编写控制层
@PreAuthorize("@ss.hasPermi('clues:clue:false')")
@Log(title = "伪线索", businessType = BusinessType.UPDATE)
@PutMapping("/false/{id}")
public AjaxResult cluesFalse(@PathVariable Long id, @RequestBody FalseClueVo falseClueVo) {
// 线索id,退回原因,退回备注
return toAjax(tbClueService.falseClue(id, falseClueVo.getReason(), falseClueVo.getRemark()));
}
2.3 编写Service层
ITbClueService
/**
* 伪线索
* @param id
* @param reason
* @param remark
* @return
*/
public int falseClue(Long id, String reason,String remark);
TbClueServiceImpl
@Override
@Transactional
public int falseClue(Long id, String reason, String remark) {
TbClue tbClue = tbClueMapper.selectTbClueById(id);
int falseCount = tbClue.getFalseCount();
// 上报超过三次删除
if (falseCount > 2) {
// 删除这条线索
return tbClueMapper.removeClueByFalseClue(id);
}
// 少于三次入线索池
tbClue.setFalseCount(tbClue.getFalseCount() + 1);
tbClue.setStatus(TbClue.StatusType.FALSE.getValue());
updateTbClue(tbClue);
updateStatus(tbClue.getId(), TbClue.StatusType.FALSE.getValue());
// 伪线索原因
TbClueTrackRecord trackRecord = new TbClueTrackRecord();
trackRecord.setCreateBy(SecurityUtils.getUsername());
trackRecord.setFalseReason(reason);
trackRecord.setRecord(remark);
trackRecord.setClueId(id);
trackRecord.setType("1");
trackRecord.setCreateTime(DateUtils.getNowDate());
return tbClueTrackRecordMapper.insertTbClueTrackRecord(trackRecord);
}
2.3 编写Mapper层
TbClueMapper
/**
* 查询线索管理
*
* @param id 线索管理ID
* @return 线索管理
*/
public TbClue selectTbClueById(Long id);
/**
* 删除伪线索
* @param id
* @return
*/
public int removeClueByFalseClue(@Param("id")Long id);
TbClueTrackRecordMapper
/**
* 新增线索跟进记录
*
* @param tbClueTrackRecord 线索跟进记录
* @return 结果
*/
public int insertTbClueTrackRecord(TbClueTrackRecord tbClueTrackRecord);
TbClueMapper.xml
<select id="selectTbClueById" parameterType="Long" resultMap="TbClueResult">
<include refid="selectTbClueVo"/>
where id = #{id}
</select>
<delete id="removeClueByFalseClue">
DELETE FROM `tb_clue` WHERE id = #{id}
</delete>
TbClueTrackRecordMapper,xml
<insert id="insertTbClueTrackRecord" parameterType="TbClueTrackRecord" useGeneratedKeys="true" keyProperty="id">
insert into tb_clue_track_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="clueId != null and clueId != ''">clue_id,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="subject != null">subject,</if>
<if test="record != null">record,</if>
<if test="level != null">level,</if>
<if test="createTime != null">create_time,</if>
<if test="type != null">type,</if>
<if test="falseReason != null">false_reason,</if>
<if test="nextTime != null">next_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="clueId != null and clueId != ''">#{clueId},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="subject != null">#{subject},</if>
<if test="record != null">#{record},</if>
<if test="level != null">#{level},</if>
<if test="createTime != null">#{createTime},</if>
<if test="type != null">#{type},</if>
<if test="falseReason != null">#{falseReason},</if>
<if test="nextTime != null">#{nextTime},</if>
</trim>
</insert>