CRM-首页--待办数据统计(接口实现)

发布于:2022-07-26 ⋅ 阅读:(323) ⋅ 点赞:(0)

接口定义

按照开始时间和结束时间查询一段时间范围内(开始时间和结束时间)的基本数据(线索数量,商机数量,合同数量,成交的金额)

需求:查询当前用户在选定范围内的待跟进的线索,商机,和待分配的线索和商机

对于销售主管来说,主要的工作是分配线索和商机,对于销售人员来说主要是跟进线索和商机

在首页提供一个入口用来展示还有多少任务是没有完成的

 

接口名 /index/getTodoInfo

请求方式 get请求

参数列表

传入参数:

/index/getBaseInfo?beginCreateTime=2021-05-05&endCreateTime=2023-05-05

beginCreateTime 开始时间

endCreateTime 结束时间

返回值:

{
    "msg":"操作成功",
    "code":200,
    "data":{
        "tofollowedCluesNum":0, //待跟进线索数目
        "tofollowedBusinessNum":0,//待跟进商机数目
        "toallocatedCluesNum":1,//待分配线索数目
        "toallocatedBusinessNum":0 //待分配商机数目
    }
}

步骤:

1.阅读产品文档(接口名,请求方式,参数列表)

2.根据产品的返回值和接收参数构建VO类

3.编写mapper层操作数据库

4.编写service层操作数据

5.编写controller层接收参数和返回数据

思路:

1.阅读上述产品文档

接口路径: /index/getTodoInfo

请求方式:get请求

传入参数:

/index/getBaseInfo?beginCreateTime=2021-05-05&endCreateTime=2023-05-05

beginCreateTime 开始时间

endCreateTime 结束时间

返回值:

{
    "msg":"操作成功",
    "code":200,
    "data":{
        "tofollowedCluesNum":0, //待跟进线索数目
        "tofollowedBusinessNum":0,//待跟进商机数目
        "toallocatedCluesNum":1,//待分配线索数目
        "toallocatedBusinessNum":0 //待分配商机数目
    }
}

2.根据返回值数据类型构建返回对象

package com.huike.report.domain.vo;


import lombok.Data;

/**
 * 首页--今日待办--返回前端VO类
 */
@Data
public class IndexTodoInfoVO {

    private Integer tofollowedCluesNum=0;  //待跟进线索数目
    private Integer tofollowedBusinessNum=0;  //待跟进商机数目
    private Integer toallocatedCluesNum=0;  //待分配线索数目
    private Integer toallocatedBusinessNum=0;  //待分配商机数目

}

3.基于需求编写sql

按照开始时间和结束时间查询一段时间范围内(开始时间和结束时间)的基本数据(线索数量,商机数量,合同数量,成交的金额)

需求:查询当前用户在选定范围内的待跟进的线索,商机,和待分配的线索和商机

对于销售主管来说,主要的工作是分配线索和商机,对于销售人员来说主要是跟进线索和商机

这是我们的需求,我们要查询出对应的待跟进,待分配的线索和商机

线索的状态可以看到对应的待跟进,定义了待跟进状态码对应的是1

UNFOLLOWED("待跟进","1"),
FOLLOWING("跟进中","2"),
RECOVERY("回收","3"),
FALSE("伪线索/踢回公海","4"),
DELETED("删除","5"),
TOBUSINESS("转换商机","6"),
TOCUSTOMER("转换客户","7");

4.编写xml代码

ReportMapper.xml

<select id="getToallocatedCluesNum"   resultType="Integer">
		SELECT COUNT(DISTINCT(id)) AS toallocatedCluesNum
		FROM `tb_clue`
		WHERE id NOT IN (
			SELECT assign_id FROM `tb_assign_record`
			WHERE
			  AND latest = 1
			  AND `type` = 0
		)
		and
		AND create_time BETWEEN #{startTime}
			AND #{endTime}

	</select>

	<select id="getToallocatedBusinessNum"   resultType="Integer">
		SELECT COUNT(DISTINCT(id)) AS toallocatedBusinessNum
		FROM `tb_business`
		WHERE id NOT IN (
			SELECT assign_id FROM `tb_assign_record`
			WHERE create_time BETWEEN #{startTime}
				AND #{endTime}
			  AND latest = 1
			  AND `type` = 1
		)
		  AND create_time BETWEEN #{startTime}
			AND #{endTime}
	</select>

	<select id="getTofollowedCluesNum"   resultType="Integer">
		SELECT COUNT(DISTINCT (id)) AS tofollowedCluesNum
		FROM `tb_clue`
		WHERE id IN
			  (
				  SELECT assign_id FROM `tb_assign_record`
				  WHERE user_name = #{username}
					AND create_time BETWEEN #{startTime}
					  AND #{endTime}
					AND latest = 1
					AND `type` = 0
			  )
		  AND `status` = 1
	</select>

	<select id="getTofollowedBusinessNum"   resultType="Integer">
		SELECT COUNT(DISTINCT(id)) AS tofollowedBusinessNum
		FROM `tb_business`
		WHERE id IN (
			SELECT assign_id FROM `tb_assign_record`
			WHERE user_name = #{username}
			  AND create_time BETWEEN #{startTime}
				AND #{endTime}
			  AND latest = 1
			  AND `type` = 1
		)
		  AND `status` = 1
	</select>

4.编写Mapper层接口

ReportMapper

/**=========================================待办========================================*/
	/**
	 * 首页--今日待办--待分配线索数量
	 * @param beginCreateTime  开始时间
	 * @param endCreateTime	   结束时间
	 * @param username		   用户名
	 * @return
	 */
	Integer getToallocatedCluesNum(@Param("startTime")String beginCreateTime,
								   @Param("endTime")String endCreateTime,
								   @Param("username")String username);

	/**
	 * 首页--今日待办--待分配商机数量
	 * @param beginCreateTime  开始时间
	 * @param endCreateTime	   结束时间
	 * @param username		   用户名
	 * @return
	 */
	Integer getToallocatedBusinessNum(@Param("startTime")String beginCreateTime,
									  @Param("endTime")String endCreateTime,
									  @Param("username")String username);

	/**
	 * 首页--今日待办--待跟进线索数量
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @param username
	 * @return
	 */
	Integer getTofollowedCluesNum(@Param("startTime")String beginCreateTime,
								  @Param("endTime")String endCreateTime,
								  @Param("username")String username);

	/**
	 * 首页--今日待办--待跟进商机数量
	 * @param beginCreateTime  开始时间
	 * @param endCreateTime	   结束时间
	 * @param username		   用户名
	 * @return
	 */
	Integer getTofollowedBusinessNum(@Param("startTime")String beginCreateTime,
									 @Param("endTime")String endCreateTime,
									 @Param("username")String username);

5.编写service层接口

编写service层实现类

ReportServiceImpl

/**
     * 获取待办
     * @param beginCreateTime  开始时间
     * @param endCreateTime    结束时间
     * @return
     */
    @Override
    public IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime) {
        IndexTodoInfoVO result = new IndexTodoInfoVO();
        //2 封装结果集属性
        // 2.1 由于查询需要用到用户名 调用工具类获取用户名
        String username = SecurityUtils.getUsername();
        // 2.2 封装第一个属性 待分配线索数量
        result.setToallocatedCluesNum(reportMpper.getToallocatedCluesNum(beginCreateTime,endCreateTime,username));
        // 2.3 封装第二个属性 待分配商机数量
        result.setToallocatedBusinessNum(reportMpper.getToallocatedBusinessNum(beginCreateTime,endCreateTime,username));
        // 2.4 封装第三个属性 待跟进线索数量
        result.setTofollowedCluesNum(reportMpper.getTofollowedCluesNum(beginCreateTime,endCreateTime,username));
        // 2.5 封装第四个属性 待跟进商机
        result.setTofollowedBusinessNum(reportMpper.getTofollowedBusinessNum(beginCreateTime,endCreateTime,username));
        //3属性封装完成后,返回结果集
        return result;

编写service层接口

IReportService


  /**
     * 获取待办数据
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime);

6.编写controller层代码

IndexController

 /**
     * 首页--获取待办数据
     * @return
     */
    @GetMapping("/getTodoInfo")
    public AjaxResult getTodoInfo(@RequestParam("beginCreateTime") String beginCreateTime,
                                  @RequestParam("endCreateTime") String endCreateTime){
        return AjaxResult.success(reportService.getTodoInfo(beginCreateTime,endCreateTime));
    } 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到