瀏覽代碼

恒春来,企微进线统计增加重粉数、企微看课统计导出增加消耗红包金额

cgp 1 周之前
父節點
當前提交
56497984d3

+ 23 - 0
fs-admin/src/main/java/com/fs/course/controller/qw/QwFsCourseWatchLogController.java

@@ -22,13 +22,18 @@ import com.fs.course.vo.FsCourseWatchLogStatisticsListVO;
 import com.fs.qw.param.QwWatchLogStatisticsListParam;
 import com.fs.qw.service.IQwWatchLogService;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
+import com.fs.sop.domain.QwSop;
+import com.fs.sop.service.IQwSopService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 短链课程看课记录Controller
@@ -48,6 +53,9 @@ public class QwFsCourseWatchLogController extends BaseController
 
     @Autowired
     private IQwWatchLogService qwWatchLogService;
+
+    @Autowired
+    private IQwSopService qwSopService;
     /**
      * 查询短链课程看课记录列表
      */
@@ -217,4 +225,19 @@ public class QwFsCourseWatchLogController extends BaseController
         List<FsCourseOverVO> list = fsCourseWatchLogService.selectFsCourseWatchLogOverStatisticsListVO(param);
         return getDataTable(list);
     }
+
+    /**
+     * 查询档期列表
+     */
+    @GetMapping("/fetchScheduleList")
+    public R fetchScheduleList(String sopName) {
+        List<QwSop> list = qwSopService.fetchScheduleList(sopName);
+        List<Map<String, Object>> result = list.stream().map(sop -> {
+            Map<String, Object> map = new HashMap<>();
+            map.put("qwSopId", sop.getId()); // 重命名id为qwSopId
+            map.put("qwSopName", sop.getName());
+            return map;
+        }).collect(Collectors.toList());
+        return R.ok().put("rows", result);
+    }
 }

+ 5 - 2
fs-service/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -247,8 +247,8 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             " ,sum(if((o.user_id is not null or o.user_id>0) and o.log_type=3,1,0)) is_user_wait_number" +
             " ,sum(if((o.user_id is null or o.user_id=0) and o.log_type=3,1,0)) no_user_wait_number" +
 //            " ,sum(ifnull(fcr.amount,0)) red_amount" +
-            ",(SELECT SUM(amount) FROM fs_course_red_packet_log \n" +
-            "     WHERE user_id = o.user_id AND video_id = o.video_id) as red_amount " +
+            ",COALESCE((SELECT SUM(amount) FROM fs_course_red_packet_log \n" +
+            "     WHERE user_id = o.user_id AND video_id = o.video_id), 0) as red_amount " +
             "</if> " +
             "FROM fs_course_watch_log o " +
             "<if test= 'sendType != 1 '> " +
@@ -288,6 +288,9 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
             "<if test ='courseId !=null'> " +
             "     and o.course_id = #{courseId} " +
             "</if>" +
+            "<if test ='qwSopId !=null and qwSopId!=\"\"'> " +
+            "     and o.sop_id = #{qwSopId} " +
+            "</if>" +
             "<if test ='videoId !=null'> " +
             "     and o.video_id = #{videoId} " +
             "</if>" +

+ 5 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogListParam.java

@@ -93,6 +93,11 @@ public class FsCourseWatchLogListParam implements Serializable {
      */
     private Integer isVip;
 
+    /**
+     * 会员状态 正常、删除、接替、拉黑等等
+     * */
+    private Integer externalStatus;
+
     /**
      * 所属项目
      */

+ 2 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseWatchLogStatisticsListParam.java

@@ -44,6 +44,8 @@ public class FsCourseWatchLogStatisticsListParam {
 
     private String endTime;
 
+    private String qwSopId;
+
     private Long project;
 
     private Long pageNum;

+ 1 - 1
fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogListVO.java

@@ -134,7 +134,7 @@ public class FsCourseWatchLogListVO extends BaseEntity
     private Long courseId;
     private Long videoId;
     private Integer isVip;
-
+    private Integer externalStatus;
     /**
      * im发送消息详情id
      */

+ 1 - 0
fs-service/src/main/java/com/fs/course/vo/FsCourseWatchLogStatisticsListVO.java

@@ -76,5 +76,6 @@ public class FsCourseWatchLogStatisticsListVO {
     private String  finishedRate;
 
     /** 消耗红包金额 */
+    @Excel(name = "消耗红包金额")
     private String  redAmount;
 }

+ 2 - 1
fs-service/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java

@@ -82,7 +82,8 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "    COUNT(CASE WHEN qec.fs_user_id IS NOT NULL THEN 1 END) AS sign,\n" +
             "    COUNT(CASE WHEN qec.`status` =3 THEN 1 END) AS los,\n" +
             "    COUNT(CASE WHEN qec.`status` IN (4, 5,6) THEN 1 END) AS del,\n" +
-            "    COUNT(CASE WHEN qec.fs_user_id IS NOT NULL and qec.fs_user_id != 0 THEN 1 END) AS reg_num\n"+
+            "    COUNT(CASE WHEN qec.fs_user_id IS NOT NULL and qec.fs_user_id != 0 THEN 1 END) AS reg_num,\n"+
+            "    COUNT(CASE WHEN qec.is_repeat = 1 THEN 1 END) AS repeat_count\n" +
             "FROM\n" +
             "    qw_external_contact qec\n" +
             "JOIN\n" +

+ 2 - 0
fs-service/src/main/java/com/fs/qw/vo/QwWatchLogStatisticsListVO.java

@@ -67,4 +67,6 @@ public class QwWatchLogStatisticsListVO {
     private Long los;//流失数
     @Excel(name = "删除数")
     private Long del;//删除数
+    @Excel(name = "重粉数")
+    private Long repeatCount;
 }

+ 3 - 0
fs-service/src/main/java/com/fs/sop/mapper/QwSopMapper.java

@@ -432,6 +432,9 @@ public interface QwSopMapper extends BaseMapper<QwSop> {
     @DataSource(DataSourceType.SOP)
     List<QwSop> selectGroup(@Param("now")LocalDate now);
 
+    @DataSource(DataSourceType.SOP)
+    List<QwSop> fetchScheduleList(@Param("name")String name);
+
     @DataSource(DataSourceType.SOP)
     void updateSopGroupIds(@Param("id") String id, @Param("chatId") String chatId);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/sop/service/IQwSopService.java

@@ -104,6 +104,8 @@ public interface IQwSopService
 
     List<QwSop> selectAllQwSopInfo(QwSop qwSop);
 
+    List<QwSop> fetchScheduleList(String name);
+
     int deleteQwSopLogsBySopIds(String[] ids);
 
     //员工看板 课程/答题/红包统计--侧边栏

+ 9 - 0
fs-service/src/main/java/com/fs/sop/service/impl/QwSopServiceImpl.java

@@ -1115,6 +1115,15 @@ public class QwSopServiceImpl implements IQwSopService
         return qwSopMapper.selectAllQwSopInfo(qwSop);
     }
 
+    @Override
+    public List<QwSop> fetchScheduleList(String name) {
+        List<QwSop> qwSops = qwSopMapper.fetchScheduleList(name);
+        if (CollectionUtils.isEmpty(qwSops)){
+            return Collections.emptyList();
+        }
+        return qwSops;
+    }
+
     @Override
     @DataSource(DataSourceType.SOP)
     public int deleteQwSopLogsBySopIds(String[] ids) {

+ 4 - 1
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectFsCourseWatchLogListVO" resultType="com.fs.course.vo.FsCourseWatchLogListVO">
-        select l.log_id,l.project,l.period_id,l.user_id,uc.course_name,v.title as video_name,qec.avatar as external_user_avatar,
+        select l.log_id,l.project,l.period_id,l.user_id,uc.course_name,v.title as video_name,qec.avatar as external_user_avatar,qec.status as externalStatus,
         l.log_type,SEC_TO_TIME(l.duration) as duration,c.company_name,l.camp_period_time,l.finish_time,
         cu.nick_name as company_user_name ,l.send_type,l.create_time,l.update_time,l.last_heartbeat_time,
         qu.qw_user_name,qec.name as external_user_name,c.company_id,u.avatar as fsAvatar,u.nick_name as fsNickName,qec.create_time as qec_create_time,
@@ -161,6 +161,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="maps.sopId != null  and maps.sopId != '' ">
                 and l.sop_id = #{maps.sopId}
             </if>
+            <if test="maps.externalStatus != null  and maps.externalStatus != '' ">
+                and qec.status = #{maps.externalStatus}
+            </if>
             <if test="maps.periodId != null">
                 and l.period_id = #{maps.periodId}
             </if>

+ 7 - 0
fs-service/src/main/resources/mapper/sop/QwSopMapper.xml

@@ -610,6 +610,13 @@
         select * from qw_sop where auto_group = 1
     </select>
 
+    <select id="fetchScheduleList" parameterType="String" resultMap="QwSopResult">
+        <include refid="selectQwSopVo"/>
+        <where>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+        </where>
+    </select>
+
     <update id="updateSopGroupIds">
         update qw_sop set chat_id = #{chatId},pull_time = now() where id = #{id}
     </update>