Преглед на файлове

10、每一周访问人数尚不能系统进行自动统计,需要手动输入查询

jasonk5949 преди 4 месеца
родител
ревизия
5b8a9809b9

+ 2 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/StatisticsLearningProgressController.java

@@ -67,7 +67,8 @@ public class StatisticsLearningProgressController {
         param.put("courseId", req.getParameter("courseId"));
         param.put("startTime", req.getParameter("startTime"));
         param.put("endTime", req.getParameter("endTime"));
-        List<Map<String,Object>> result=statisticsLearningProgressService.viewTendency(param);
+//        List<Map<String,Object>> result=statisticsLearningProgressService.viewTendency(param);
+        List<Map<String,Object>> result = statisticsLearningProgressService.viewWeekly(param);
         return CommonResult.data(result);
     }
 

+ 2 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StatisticsLearningProgressMapper.java

@@ -43,4 +43,6 @@ public interface StatisticsLearningProgressMapper {
      * 学习进度-学习明细数据
      */
     Page<Map<String,Object>> studyDetail(@Param("param") Map param, @Param("page") Page<Object> page);
+
+    String getViewWeekNum(Map param);
 }

+ 16 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/StatisticsLearningProgressMapper.xml

@@ -250,4 +250,20 @@
         WHERE 1=1
     </select>
 
+    <select id="getViewWeekNum" resultType="java.lang.String">
+        SELECT
+        IFNULL(count(DISTINCT csb.USER_ID),0) as viewTendencyNum
+        FROM COURSE_STUDENT_BURIALPOINT csb
+        LEFT JOIN COURSE_CLASSHOUR cch ON cch.ID=csb.HOUR_ID AND cch.DELETE_FLAG ='NOT_DELETE'
+        LEFT JOIN COURSE_CHAPTER cc ON cc.ID=cch.CHAPTER_ID AND cc.DELETE_FLAG ='NOT_DELETE'
+        LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID =cc.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+        WHERE csb.DELETE_FLAG ='NOT_DELETE'
+        AND csb.FUNC_TYPE='1'
+        AND csb.TYPE='1'
+        AND TO_CHAR(csb.CREATE_TIME, 'YYYY-MM-DD') =#{day}
+        <if test="courseId!=null and courseId != ''">
+            and cc.COURSE_ID=#{courseId}
+        </if>
+    </select>
+
 </mapper>

+ 4 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/StatisticsLearningProgressService.java

@@ -35,4 +35,8 @@ public interface StatisticsLearningProgressService {
      */
     Page<Map<String,Object>> studyDetail(Map param);
 
+    /**
+     * 这一周的访问趋势
+     */
+    List<Map<String, Object>> viewWeekly(Map param);
 }

+ 55 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/StatisticsLearningProgressServiceImpl.java

@@ -103,6 +103,61 @@ public class StatisticsLearningProgressServiceImpl implements StatisticsLearning
         return statisticsLearningProgressMapper.studyDetail(param, CommonPageRequest.defaultPage());
     }
 
+    @Override
+    public List<Map<String, Object>> viewWeekly(Map param) {
+        List<Map<String,Object> > resultList=new ArrayList();
+        String courseId=null;
+        if(ObjectUtil.isNotEmpty(param.get("courseId")))courseId=param.get("courseId").toString();
+        String startTime="";
+        if(ObjectUtil.isNotEmpty(param.get("startTime")))startTime=param.get("startTime").toString();
+        String endTime="";
+        if(ObjectUtil.isNotEmpty(param.get("endTime")))endTime=param.get("endTime").toString();
+        // 获取当前这一周的,这7天的日期
+        List<String> days = getSevenWeeksDay(startTime,endTime);
+        for(String day : days) {
+            Map viewTendencyParam =new HashMap();
+            viewTendencyParam.put("day",day);
+            viewTendencyParam.put("courseId",courseId);
+            String viewTendencyNum=statisticsLearningProgressMapper.getViewWeekNum(viewTendencyParam);
+            Map result=new HashMap();
+            // 把日期转换成中文星期几
+            String weekName = getWeekdayName(day);
+            result.put("month", weekName); // 展示给前端的周几
+            result.put("viewTendencyNum",viewTendencyNum);
+            resultList.add(result);
+        }
+        return resultList;
+    }
+
+    private String getWeekdayName(String dateStr) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            Date date = sdf.parse(dateStr);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(date);
+            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+            String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
+            return weekDays[dayOfWeek - 1];
+        } catch (Exception e) {
+            return "";
+        }
+    }
+
+    /**
+     * 获取这一周7天的日期列表
+     *  不传值默认查当前月
+     */
+    private List<String> getSevenWeeksDay(String startTime, String endTime) {
+        List<String> weeks = new ArrayList<>();
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置周一为一周的开始
+        for (int i = 0; i < 7; i++) {
+            weeks.add(new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
+            calendar.add(Calendar.DATE, 1); // 加一天
+        }
+        return weeks;
+    }
+
 
     /**
      *  获取指定七个月

BIN
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/resources/userImportTemplate.xlsx