YangeIT大约 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>