소스 검색

企微客户删除,流失添加日志,企微客户流失,删除统计

wjj 2 주 전
부모
커밋
3ac7b0134a

+ 11 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactController.java

@@ -27,6 +27,7 @@ import com.fs.qw.param.*;
 import com.fs.qw.service.*;
 import com.fs.qw.vo.QwExternalContactVO;
 import com.fs.qw.vo.QwFsUserVO;
+import com.fs.qw.vo.QwUserDelLossLogVO;
 import com.github.pagehelper.PageHelper;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -627,4 +628,14 @@ public class QwExternalContactController extends BaseController
         return PubFun.listToNewList(list, QwExternalContactVO::getId);
     }
 
+    /**
+     * 查询企业微信客户删除流失列表
+     */
+    @GetMapping("/delLossStatistics")
+    public TableDataInfo delLossStatistics(QwUserDelLossLogParam param){
+        startPage();
+        List<QwUserDelLossLogVO> qwUserDelLossLogVOS = qwExternalContactService.selectQwUserDelLossLogList(param);
+        return getDataTable(qwUserDelLossLogVOS);
+    }
+
 }

+ 44 - 0
fs-service/src/main/java/com/fs/qw/domain/QwUserDelLossLog.java

@@ -0,0 +1,44 @@
+package com.fs.qw.domain;
+
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLog {
+
+    private Long id;
+
+    /**
+     * 企微微信客户id
+     */
+    private Long externalContactId;
+
+    /**
+     *  公司id
+     */
+    private Long companyId;
+
+    /**
+     *  公司用户id
+     */
+    private Long companyUserId;
+
+    /**
+     *  员工id(qw_user)
+     */
+    private Long qwUserId;
+
+    /**
+     *  类型:1-删除 2-流失
+     */
+    private Integer type;
+
+    /**
+     *  时间
+     */
+    private String time;
+
+    /**
+     *  企业id
+     */
+    private String corpId;
+}

+ 5 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactMapper.java

@@ -3,6 +3,7 @@ package com.fs.qw.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.fastGpt.domain.FastgptChatArtificialWords;
 import com.fs.qw.domain.QwExternalContact;
+import com.fs.qw.domain.QwUserDelLossLog;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
 import com.fs.qw.result.QwExternalContactByQwResult;
@@ -428,4 +429,8 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
     List<String> selectRemarkByCompanyUserAndFsUser(@Param("userId")String userId,@Param("companyUserId") String companyUserId,@Param("cropId") String cropId);
 
     List<QwExternalContact> selectQwExternalContactByFsUserId(@Param("userId") Long userId);
+
+    int insertQwUserDelLossLog(@Param("param") QwUserDelLossLog qwUserDelLossLog);
+
+    List<QwUserDelLossLogVO> selectQwUserDelLossList(@Param("param") QwUserDelLossLogParam param);
 }

+ 24 - 0
fs-service/src/main/java/com/fs/qw/param/QwUserDelLossLogParam.java

@@ -0,0 +1,24 @@
+package com.fs.qw.param;
+
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLogParam {
+    /**
+     * 企微员工账号
+     */
+    private String userId;
+    /**
+     * 统计开始时间
+     */
+    private String startTime;
+    /**
+     * 统计结束时间
+     */
+    private String endTime;
+    /**
+     *  企微员工名称
+     */
+    private String userName;
+
+}

+ 7 - 4
fs-service/src/main/java/com/fs/qw/service/IQwExternalContactService.java

@@ -12,10 +12,7 @@ import com.fs.qw.param.sidebar.ExternalContactInfoParam;
 import com.fs.qw.param.sidebar.TagGroupUpdateParam;
 import com.fs.qw.result.QwExternalContactLogVo;
 import com.fs.qw.result.QwExternalContactVo;
-import com.fs.qw.vo.ExternalContactDetailsVO;
-import com.fs.qw.vo.QwExternalContactVO;
-import com.fs.qw.vo.QwExternalListByHeavyVO;
-import com.fs.qw.vo.QwSopRuleTimeVO;
+import com.fs.qw.vo.*;
 import com.fs.qw.vo.newvo.ExternalContactListVO;
 import com.fs.qw.vo.newvo.ExternalContactPageVO;
 import com.fs.qw.vo.sidebar.ExternalContactInfoVO;
@@ -237,4 +234,10 @@ public interface IQwExternalContactService extends IService<QwExternalContact> {
 
     List<QwExternalContact> selectQwExternalContactByFsUserId(Long userId);
 
+    /**
+     * 企微用户流失删除统计
+     * @param param 查询参数
+     */
+    List<QwUserDelLossLogVO> selectQwUserDelLossLogList(QwUserDelLossLogParam param);
+
 }

+ 28 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.qw.service.impl;
 
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONException;
@@ -4103,6 +4104,17 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
             qwExternal.setDelTime(new Date());
 //            logger.info("删除用户客户更改状态");
             qwExternalContactMapper.updateQwExternalContact(qwExternal);
+
+            logger.info("添加删除客户日志");
+            QwUserDelLossLog qwUserDelLossLog = new QwUserDelLossLog();
+            qwUserDelLossLog.setExternalContactId(qwExternalContact.getId());
+            qwUserDelLossLog.setType(1);
+            qwUserDelLossLog.setTime(DateUtil.format(qwExternal.getDelTime(), "yyyy-MM-dd"));
+            qwUserDelLossLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
+            qwUserDelLossLog.setCompanyId(qwExternalContact.getCompanyId());
+            qwUserDelLossLog.setQwUserId(qwExternalContact.getQwUserId());
+            qwUserDelLossLog.setCorpId(qwExternalContact.getCorpId());
+            qwExternalContactMapper.insertQwUserDelLossLog(qwUserDelLossLog);
         }
     }
 
@@ -4121,6 +4133,17 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                 qwExternal.setStatus(3);
                 qwExternal.setLossTime(new Date());
                 qwExternalContactMapper.updateQwExternalContact(qwExternal);
+
+                logger.info("添加流失客户日志");
+                QwUserDelLossLog qwUserDelLossLog = new QwUserDelLossLog();
+                qwUserDelLossLog.setExternalContactId(qwExternalContact.getId());
+                qwUserDelLossLog.setType(2);
+                qwUserDelLossLog.setTime(DateUtil.format(qwExternal.getLossTime(), "yyyy-MM-dd"));
+                qwUserDelLossLog.setCompanyUserId(qwExternalContact.getCompanyUserId());
+                qwUserDelLossLog.setCompanyId(qwExternalContact.getCompanyId());
+                qwUserDelLossLog.setQwUserId(qwExternalContact.getQwUserId());
+                qwUserDelLossLog.setCorpId(qwExternalContact.getCorpId());
+                qwExternalContactMapper.insertQwUserDelLossLog(qwUserDelLossLog);
             }
             if (qwExternalContact.getWayId() != null) {
                 qwContactWayService.updateQwContactWayByLoss(qwExternalContact);
@@ -5609,6 +5632,11 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         return qwExternalContactMapper.selectQwExternalContactByFsUserId(userId);
     }
 
+    @Override
+    public List<QwUserDelLossLogVO> selectQwUserDelLossLogList(QwUserDelLossLogParam param) {
+        return qwExternalContactMapper.selectQwUserDelLossList(param);
+    }
+
 
     public Boolean getSopAiChatByRedis(String qwUserId,String corpId,String externalUserId){
 

+ 32 - 0
fs-service/src/main/java/com/fs/qw/vo/QwUserDelLossLogVO.java

@@ -0,0 +1,32 @@
+package com.fs.qw.vo;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class QwUserDelLossLogVO {
+
+    /**
+     *  员工账号(qw_user)
+     */
+    @Excel(name = "企微员工账号")
+    private String userId;
+
+    /**
+     *  员工姓名(qu_user)
+     */
+    @Excel(name = "企微员工姓名")
+    private String qwUserName;
+
+    /**
+     *  删除数量
+     */
+    @Excel(name = "删除数量")
+    private Long delCount;
+
+    /**
+     *  流失数量
+     */
+    @Excel(name = "流失数量")
+    private Long lossCount;
+}

+ 26 - 0
fs-service/src/main/resources/mapper/qw/QwExternalContactMapper.xml

@@ -619,5 +619,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                left join company_user cu on cu.user_id=qu.company_user_id
         where fs_user_id = #{userId}
     </select>
+    
+    <insert id="insertQwUserDelLossLog" parameterType="com.fs.qw.domain.QwUserDelLossLog">
+        insert into qw_user_del_loss_log (external_contact_id,company_id,company_user_id,type,time,qw_user_id,corp_id) values
+        (#{param.externalContactId},#{param.companyId},#{param.companyUserId},#{param.type},#{param.time},#{param.qwUserId},#{param.corpId})
+    </insert>
+
+    <select id="selectQwUserDelLossList" resultType="com.fs.qw.vo.QwUserDelLossLogVO">
+        SELECT
+        SUM(case WHEN udl.type = 1 THEN 1 ELSE 0 END) delCount,
+        SUM(case WHEN udl.type = 2 THEN 1 ELSE 0 END) lossCount,
+        qu.qw_user_id user_id,qu.qw_user_name
+        FROM `qw_user_del_loss_log` udl
+        LEFT JOIN qw_user qu ON qu.id = udl.qw_user_id
+        WHERE 1 = 1
+        <if test="param.startTime != null and param.endTime != null">
+            and udl.time BETWEEN #{param.startTime} AND #{param.endTime}
+        </if>
+        <if test="param.userName != null and param.userName != ''">
+            and qu.qw_user_name LIKE CONCAT('%',#{param.userName},'%')
+        </if>
+        <if test="param.userId != null and param.userId != ''">
+            and qu.qw_user_id LIKE CONCAT('%',#{param.userId},'%')
+        </if>
+        GROUP BY udl.qw_user_id
+    </select>
+    
 
 </mapper>