Просмотр исходного кода

销售端营期用户详情功能

yjwang 1 месяц назад
Родитель
Сommit
4eb4626080

+ 36 - 0
fs-company/src/main/java/com/fs/company/controller/course/FsCourseWatchLogController.java

@@ -28,6 +28,8 @@ import com.fs.qw.service.IQwWatchLogService;
 import com.fs.qw.vo.QwWatchLogAllStatisticsListVO;
 import com.fs.qw.vo.QwWatchLogStatisticsListVO;
 import com.fs.sop.mapper.SopUserLogsMapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -407,4 +409,38 @@ public class FsCourseWatchLogController extends BaseController
         param.setPeriodId(periodId);
         return R.ok().put("data", fsCourseWatchLogService.getCourseStatisticsDetail(param));
     }
+
+    /**
+     * 课程小结-用户详情列表(分页)
+     * 根据videoId、periodId查询观看记录,区分首次/第2-n次观看时长,关联订单及销售公司
+     *
+     * @param videoId  视频ID
+     * @param periodId 营期ID
+     * @param pageNum  页码
+     * @param pageSize 每页条数
+     * @return 分页用户详情
+     */
+    @PreAuthorize("@ss.hasPermi('course:courseWatchLog:query')")
+    @GetMapping("/courseStatisticsUserDetail")
+    public R getCourseStatisticsUserDetail(
+            @RequestParam("videoId") Long videoId,
+            @RequestParam("periodId") Long periodId,
+            @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+            @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        if (videoId == null || periodId == null) {
+            return R.error("视频ID和营期ID不能为空");
+        }
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if(loginUser == null || loginUser.getCompany() == null || loginUser.getCompany().getCompanyId() == null){
+            return R.error("销售信息不存在!");
+        }
+        com.fs.course.param.CourseStatisticsUserDetailParam param = new com.fs.course.param.CourseStatisticsUserDetailParam();
+        param.setVideoId(videoId);
+        param.setPeriodId(periodId);
+        param.setPageNum(pageNum);
+        param.setPageSize(pageSize);
+        param.setCompanyId(loginUser.getCompany().getCompanyId());
+        PageHelper.startPage(pageNum, pageSize);
+        return R.ok().put("data", new PageInfo<>(fsCourseWatchLogService.getCourseStatisticsUserDetailList(param)));
+    }
 }

+ 3 - 0
fs-service/src/main/java/com/fs/course/param/CourseStatisticsUserDetailParam.java

@@ -21,4 +21,7 @@ public class CourseStatisticsUserDetailParam implements Serializable {
     private Integer pageNum = 1;
     /** 每页条数 */
     private Integer pageSize = 10;
+
+    // 公司ID
+    private Long companyId;
 }

+ 6 - 0
fs-service/src/main/resources/mapper/course/FsCourseWatchLogMapper.xml

@@ -1465,6 +1465,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             INNER JOIN fs_user_course_period_days fcpd ON fcpd.period_id = l.period_id AND fcpd.video_id = l.video_id AND fcpd.del_flag = '0'
             INNER JOIN fs_user_course_video v ON v.video_id = l.video_id AND v.is_del = 0
             WHERE l.video_id = #{param.videoId} AND l.period_id = #{param.periodId} AND l.user_id IS NOT NULL
+            <if test="param.companyId != null">
+                AND l.company_id = #{param.companyId}
+            </if>
             GROUP BY l.user_id
         ) ua
         LEFT JOIN fs_user u ON u.user_id = ua.user_id
@@ -1476,6 +1479,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 MIN(o.id) AS min_order_id
             FROM fs_store_order_scrm o
             WHERE o.order_type = 3 AND o.video_id = #{param.videoId} AND o.period_id = #{param.periodId} AND o.paid = 1
+        <if test="param.companyId != null">
+            AND o.company_id = #{param.companyId}
+        </if>
             GROUP BY o.user_id
         ) ord ON ord.user_id = ua.user_id
         LEFT JOIN company c ON c.company_id = ua.company_id