2 Commits 2a2c2426b1 ... 8ea2fb4717

Autore SHA1 Messaggio Data
  marxjaw 8ea2fb4717 Merge remote-tracking branch 'origin/master' 1 mese fa
  marxjaw 280a09fa54 优化SQL查询 1 mese fa

+ 14 - 0
yt-common/src/main/java/com/ytpm/util/DateUtil.java

@@ -4,6 +4,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
 import java.util.Date;
 
 public class DateUtil {
@@ -59,6 +60,19 @@ public class DateUtil {
         ).atTime(23, 59, 59);
         return localDateTimeToDate(monthEnd);
     }
+    // 获取本周周一
+    public static Date getWeekStart() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        return calendar.getTime();
+    }
+
+    //获取本周周日
+    public static Date getWeekEnd() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+        return calendar.getTime();
+    }
 
     private static Date localDateTimeToDate(LocalDateTime localDateTime) {
         return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

+ 2 - 2
yt-question/yt-question-service/src/main/java/com/ytpm/question/dao/AppUserMapper.java

@@ -130,12 +130,12 @@ public interface AppUserMapper {
     /**
      * 查询应用排行榜
      */
-    List<AppRankingListVO> getAppRanking(@Param("sortBy") int sortBy,@Param("limit") int limit);
+    List<AppRankingListVO> getAppRanking(@Param("beginTime") Date beginTime,@Param("endTime") Date endTime,@Param("limit") int limit);
 
     /**
      * 查询用户排行榜数据
      */
-    List<UserRankingListVO> getUserRanking(@Param("sortBy") int sortBy,@Param("limit") int limit);
+    List<UserRankingListVO> getUserRanking(@Param("beginTime") Date beginTime,@Param("endTime") Date endTime,@Param("limit") int limit);
 
     /**
      * 根据应用查询用户数量

+ 19 - 2
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AdServiceImpl.java

@@ -29,6 +29,7 @@ import com.ytpm.question.dao.AdRecordMapper;
 import com.ytpm.question.dao.AppUserMapper;
 import com.ytpm.question.service.AdService;
 import com.ytpm.question.view.AgentNetworkAgg;
+import com.ytpm.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +42,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -121,13 +123,28 @@ public class AdServiceImpl implements AdService {
 
     /**
      * 查询排行榜信息
+     * @param sortBy 1-当日 2-本周 3-本月
      */
     @Override
     public DashboardRankingListVO queryRankingList(Integer sortBy, Integer limit) {
+        Date beginTime,endTime;
+        switch (sortBy) {
+            case 1:
+                beginTime = DateUtil.getTodayStart();
+                endTime = DateUtil.getTodayEnd();
+                break;
+            case 2:
+                beginTime = DateUtil.getWeekStart();
+                endTime = DateUtil.getWeekEnd();
+                break;
+            default:
+                beginTime = DateUtil.getMonthStart();
+                endTime = DateUtil.getMonthEnd();
+        }
         //查询前五个应用名称 当日收益  用户数量
-        List<AppRankingListVO> appRankingList = appUserMapper.getAppRanking(sortBy, limit);
+        List<AppRankingListVO> appRankingList = appUserMapper.getAppRanking(beginTime,endTime, limit);
         //查询前五个用户  所属应用  视频数 总收益 ecpm
-        List<UserRankingListVO> userRankingList = appUserMapper.getUserRanking(sortBy, limit);
+        List<UserRankingListVO> userRankingList = appUserMapper.getUserRanking(beginTime,endTime, limit);
         return new DashboardRankingListVO(appRankingList, userRankingList);
     }
 

+ 4 - 30
yt-question/yt-question-service/src/main/resources/mapper/AppUserMapper.xml

@@ -542,21 +542,8 @@
         FROM
         yt_dyz_ad_record ar
         JOIN yt_dyz_user u ON ar.user_id = u.user_id
-        <where>
-            <if test="sortBy != null">
-                <choose>
-                    <when test="sortBy == 1">
-                        DATE_FORMAT( ar.finish_time, '%Y-%m-%d' ) = CURRENT_DATE()
-                    </when>
-                    <when test=" sortBy == 2">
-                        YEARWEEK( ar.finish_time, 1 ) = YEARWEEK(now(),1)
-                    </when>
-                    <otherwise>
-                        DATE_FORMAT( ar.finish_time, '%Y-%m' ) = DATE_FORMAT(NOW(), '%Y-%m')
-                    </otherwise>
-                </choose>
-            </if>
-        </where>
+        WHERE ar.finish_time >= #{beginTime}
+        AND ar.finish_time <![CDATA[<=]]> #{endTime}
         GROUP BY
         u.app_id
         ORDER BY
@@ -573,21 +560,8 @@
         FROM
         yt_dyz_ad_record ar
         JOIN yt_dyz_user u ON ar.user_id = u.user_id
-        <where>
-            <if test="sortBy != null">
-                <choose>
-                    <when test="sortBy == 1">
-                        DATE_FORMAT( ar.finish_time, '%Y-%m-%d' ) = CURRENT_DATE()
-                    </when>
-                    <when test=" sortBy == 2">
-                        YEARWEEK( ar.finish_time, 1 ) = YEARWEEK(now(),1)
-                    </when>
-                    <otherwise>
-                        DATE_FORMAT( ar.finish_time, '%Y-%m' ) = DATE_FORMAT(NOW(), '%Y-%m')
-                    </otherwise>
-                </choose>
-            </if>
-        </where>
+        WHERE ar.finish_time >= #{beginTime}
+          AND ar.finish_time <![CDATA[<=]]> #{endTime}
         GROUP BY ar.user_id
         ORDER BY
         sum( ar.revenue ) DESC