yumeng преди 1 седмица
родител
ревизия
5de9e84eab

+ 8 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/KuaiShouMaterialStareController.java

@@ -99,6 +99,9 @@ public class KuaiShouMaterialStareController {
                                                        @RequestParam(name = "startTime") String startTime,
                                                        @RequestParam(name = "endTime") String endTime,
                                                        @RequestParam(name = "userId") String userId) {
+        if (isTodayRange(startTime, endTime)) {
+            return materialStareService.kuaiShouOperateDateTotal(mediaType, startTime, endTime, userId);
+        }
         String cacheKey = "dashboard:stare:dateTotal:" + safe(mediaType) + ":" + safe(startTime) + ":" + safe(endTime) + ":" + safe(userId);
         return getCachedResult(cacheKey, resolveCacheTtl(startTime, endTime), () -> materialStareService.kuaiShouOperateDateTotal(mediaType, startTime, endTime, userId));
     }
@@ -371,6 +374,11 @@ public class KuaiShouMaterialStareController {
         return HISTORY_CACHE_TTL;
     }
 
+    private boolean isTodayRange(String startTime, String endTime) {
+        String today = DateUtils.formatDate(new Date());
+        return today.equals(startTime) && today.equals(endTime);
+    }
+
     private String safe(Object value) {
         return value == null ? "null" : String.valueOf(value);
     }

+ 3 - 3
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/MaterialStareMapper.java

@@ -89,9 +89,9 @@ public interface MaterialStareMapper {
     List<KuaiShouOperateVo> getAdqOperateInfo(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("list") Set<String> operatorUserIds);
     List<KuaiShouOperateVo> getKuaiShouOrBytedanceOperateInfo(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("list") Set<String> operatorUserIds);
 
-    List<KuaiShouOperateVo> getKuaiShouOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("list") Set<String> operatorUserIds);
-    List<KuaiShouOperateVo> getBytedanceOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("list") Set<String> operatorUserIds);
-    List<KuaiShouOperateVo> getAdqOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("list") Set<String> operatorUserIds);
+    List<KuaiShouOperateVo> getKuaiShouOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("nowHour") Integer nowHour, @Param("list") Set<String> operatorUserIds);
+    List<KuaiShouOperateVo> getBytedanceOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("nowHour") Integer nowHour, @Param("list") Set<String> operatorUserIds);
+    List<KuaiShouOperateVo> getAdqOperateInfoHourly(@Param("startDate") Long startDate, @Param("endDate") Long endDate, @Param("nowHour") Integer nowHour, @Param("list") Set<String> operatorUserIds);
 
     //查看 快手 有效 计划 组
     JSONObject getKuaiShouAccountBaseByUserId(@Param("list") Set<String> operatorUserIds, @Param("projectId") String projectId, @Param("accountId") String accountId, @Param("startDate") Long startDate, @Param("endDate") Long endDate);

+ 9 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/MaterialStareMapper.xml

@@ -1071,6 +1071,9 @@
         <if test="endDate != null and endDate != '' ">
             and d.stat_date &lt;= #{endDate}
         </if>
+        <if test="nowHour != null and nowHour != '' ">
+            AND d.hour &lt;= #{nowHour}
+        </if>
         <if test='list!=null and list.size() > 0'>
             AND d.user_id IN
             <foreach collection="list" item="item" separator=","
@@ -1099,6 +1102,9 @@
         <if test="endDate != null and endDate != '' ">
             and d.stat_datetime &lt;= #{endDate}
         </if>
+        <if test="nowHour != null and nowHour != '' ">
+            AND d.hour &lt;= #{nowHour}
+        </if>
         <if test='list!=null and list.size() > 0'>
             AND d.user_id IN
             <foreach collection="list" item="item" separator=","
@@ -1127,6 +1133,9 @@
         <if test="endDate != null and endDate != '' ">
             and t.stat_date &lt;= #{endDate}
         </if>
+        <if test="nowHour != null and nowHour != '' ">
+            AND t.stat_hour &lt;= #{nowHour}
+        </if>
         <if test='list!=null and list.size() > 0'>
             AND t.user_id IN
             <foreach collection="list" item="item" separator=","

+ 22 - 7
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java

@@ -1744,13 +1744,17 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 if (mediaType.equals("1")) {
                     if (daysBetween <= 1) {
                         //时报
-                        listOperate = materialStareMapper.getBytedanceOperateInfoHourly(startDate, entDate, operatorUserIds);
+                        listOperate = materialStareMapper.getBytedanceOperateInfoHourly(startDate, entDate, getCurrentHourSafe(), operatorUserIds);
                     } else {
 
                         listOperate = materialStareMapper.getBytedanceOperateInfo(startDate, entDate, operatorUserIds);
                     }
                 } else {
-                    listOperate = materialStareMapper.getKuaiShouOperateInfo(startDate, entDate, operatorUserIds);
+                    if (daysBetween <= 1) {
+                        listOperate = materialStareMapper.getKuaiShouOperateInfoHourly(startDate, entDate, getCurrentHourSafe(), operatorUserIds);
+                    } else {
+                        listOperate = materialStareMapper.getKuaiShouOperateInfo(startDate, entDate, operatorUserIds);
+                    }
                 }
 
                 //总花费
@@ -1976,6 +1980,14 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         return userIds == null ? 0 : userIds.size();
     }
 
+    private Integer getCurrentHourSafe() {
+        try {
+            return DateUtils.getNowHour();
+        } catch (ParseException e) {
+            throw new RuntimeException("Failed to resolve current hour", e);
+        }
+    }
+
     private long buildAccountQueryStart(long startDate, long lastTimeStart, long startEqually, boolean includeEqually) {
         long queryStartDate = Math.min(startDate, lastTimeStart);
         if (includeEqually) {
@@ -2103,18 +2115,18 @@ public class MaterialStareServiceImpl implements MaterialStareService {
     private List<KuaiShouOperateVo> loadOperatePageData(String mediaType, long startDate, long endDate, long nowDate, Set<String> userIds) {
         if ("1".equals(mediaType)) {
             if (startDate == nowDate) {
-                return materialStareMapper.getBytedanceOperateInfoHourly(nowDate, nowDate, userIds);
+                return materialStareMapper.getBytedanceOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getBytedanceOperateInfo(startDate, endDate, userIds);
         }
         if ("16".equals(mediaType)) {
             if (startDate == nowDate) {
-                return materialStareMapper.getAdqOperateInfoHourly(nowDate, nowDate, userIds);
+                return materialStareMapper.getAdqOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getAdqOperateInfo(startDate, endDate, userIds);
         }
         if (startDate == nowDate) {
-            return materialStareMapper.getKuaiShouOperateInfoHourly(nowDate, nowDate, userIds);
+            return materialStareMapper.getKuaiShouOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
         }
         return materialStareMapper.getKuaiShouOperateInfo(startDate, endDate, userIds);
     }
@@ -2179,16 +2191,19 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         }
         if ("1".equals(mediaType)) {
             if (daysBetween != null && daysBetween <= 1) {
-                return materialStareMapper.getBytedanceOperateInfoHourly(startDate, endDate, userIds);
+                return materialStareMapper.getBytedanceOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getBytedanceOperateInfo(startDate, endDate, userIds);
         }
         if ("16".equals(mediaType)) {
             if (daysBetween != null && daysBetween <= 1) {
-                return materialStareMapper.getAdqOperateInfoHourly(startDate, endDate, userIds);
+                return materialStareMapper.getAdqOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getAdqOperateInfo(startDate, endDate, userIds);
         }
+        if (daysBetween != null && daysBetween <= 1) {
+            return materialStareMapper.getKuaiShouOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
+        }
         return materialStareMapper.getKuaiShouOperateInfo(startDate, endDate, userIds);
     }