
- 新增线索跟进任务定时 job,自动更新三天未跟进的线索状态- 优化客户导入功能,增加重复客户检测和提示 - 添加合同编号字段到发票响应 VO- 修改合同列表获取逻辑,支持下属和自己的合同查询 -优化发票列表查询,支持关系筛选 - 新增商机状态更新接口
117 lines
4.6 KiB
XML
117 lines
4.6 KiB
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="cn.iocoder.yudao.module.crm.dal.mysql.crmclues.CrmCluesMapper">
|
||
|
||
<!--
|
||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||
文档可见:https://www.yixiang.co/MyBatis/x-plugins/
|
||
-->
|
||
|
||
<select id="selectPageList"
|
||
resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesRespVO">
|
||
select
|
||
a.*,
|
||
b.nickname as ownUserName
|
||
from crm_clues a
|
||
left join system_users b ON b.id = a.owner_user_id
|
||
<where>
|
||
a.deleted = 0
|
||
and a.status != 1
|
||
<if test="dto.name != null and dto.name != ''">
|
||
and a.name like concat('%', #{dto.name}, '%')
|
||
</if>
|
||
<if test="dto.mobile != null and dto.mobile != ''">
|
||
and a.mobile = #{dto.mobile}
|
||
</if>
|
||
<if test="dto.telephone != null and dto.telephone != ''">
|
||
and a.telephone = #{dto.telephone}
|
||
</if>
|
||
<if test="dto.status != null">
|
||
and a.status = #{dto.status}
|
||
</if>
|
||
<if test="dto.level != null">
|
||
and a.level = #{dto.level}
|
||
</if>
|
||
<if test="dto.source != null">
|
||
and a.source = #{dto.source}
|
||
</if>
|
||
<if test="dto.industry != null">
|
||
and a.industry = #{dto.industry}
|
||
</if>
|
||
<if test="dto.ownerUserName != null and dto.ownerUserName != ''">
|
||
and b.nickname like concat('%', #{dto.ownerUserName}, '%')
|
||
</if>
|
||
<if test="ids != null and ids.size() > 0">
|
||
and a.owner_user_id in
|
||
<foreach item="ownerUserId" collection="ids" separator="," open="(" close=")" index="">
|
||
#{ownerUserId}
|
||
</foreach>
|
||
</if>
|
||
</where>
|
||
order by a.id desc
|
||
</select>
|
||
<select id="selectPageList2"
|
||
resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesRespVO">
|
||
select
|
||
a.*,
|
||
b.nickname as createName
|
||
from crm_clues a
|
||
left join system_users b ON b.id = a.creator
|
||
<where>
|
||
a.deleted = 0
|
||
and a.owner_user_id = 0
|
||
<if test="dto.name != null and dto.name != ''">
|
||
and a.name like concat('%', #{dto.name}, '%')
|
||
</if>
|
||
<if test="dto.mobile != null and dto.mobile != ''">
|
||
and a.mobile = #{dto.mobile}
|
||
</if>
|
||
<if test="dto.telephone != null and dto.telephone != ''">
|
||
and a.telephone = #{dto.telephone}
|
||
</if>
|
||
<if test="dto.status != null">
|
||
and a.status = #{dto.status}
|
||
</if>
|
||
<if test="dto.level != null">
|
||
and a.level = #{dto.level}
|
||
</if>
|
||
<if test="dto.source != null">
|
||
and a.source = #{dto.source}
|
||
</if>
|
||
<if test="dto.industry != null">
|
||
and a.industry = #{dto.industry}
|
||
</if>
|
||
<if test="dto.ownerUserName != null and dto.ownerUserName != ''">
|
||
and b.nickname like concat('%', #{dto.ownerUserName}, '%')
|
||
</if>
|
||
</where>
|
||
order by a.id desc
|
||
</select>
|
||
|
||
<select id="selectStatisticsByUserIds" resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesStatisticsRespVO">
|
||
SELECT
|
||
owner_user_id AS ownerUserId,
|
||
COUNT(1) AS count,
|
||
COUNT( CASE WHEN status = 1 THEN 1 END ) AS successCount
|
||
FROM
|
||
crm_clues
|
||
WHERE
|
||
deleted = 0
|
||
AND owner_user_id IN
|
||
<foreach item="ownerUserId" collection="ownerUserIds" separator="," open="(" close=")" index="">
|
||
#{ownerUserId}
|
||
</foreach>
|
||
<if test="createTime != null and createTime.length > 0">
|
||
<if test="createTime[0] != null">
|
||
AND create_time >= #{createTime[0]}
|
||
</if>
|
||
<if test="createTime[1] != null">
|
||
AND create_time <= #{createTime[1]}
|
||
</if>
|
||
</if>
|
||
GROUP BY owner_user_id
|
||
</select>
|
||
</mapper>
|