From 3c5723e2b832823fc63e6d8cd1460b2e003583db Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 29 九月 2025 17:16:38 +0800
Subject: [PATCH] 抽奖活动添加次数规则

---
 framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java |  146 +++++++++++++++++++++++++-----------------------
 1 files changed, 77 insertions(+), 69 deletions(-)

diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java
index 384a3ce..fabe22c 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java
@@ -16,6 +16,7 @@
 import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam;
 import cn.lili.mybatis.util.PageUtil;
 import cn.lili.utils.COSUtil;
+import cn.lili.utils.CommonUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -177,83 +178,90 @@
         Calendar calendar = Calendar.getInstance(); // 鐢ㄤ簬鏃ユ湡璁$畻鐨勬棩鍘嗗疄渚�
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         int days = 0;
-        switch (queryParam.getSearchType()) {
-            case "TODAY":
-                // 浠婂ぉ锛氫粠浠婂ぉ0鐐瑰埌鐜板湪
-                calendar.setTime(new Date()); // 閲嶇疆涓哄綋鍓嶆椂闂�
-                calendar.set(Calendar.HOUR_OF_DAY, 0); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級
-                calendar.set(Calendar.MINUTE, 0);      // 鍒嗛挓璁句负0
-                calendar.set(Calendar.SECOND, 0);      // 绉掕涓�0
-                calendar.set(Calendar.MILLISECOND, 0); // 姣璁句负0
-                startTime = calendar.getTime();        // 寰楀埌浠婂ぉ0鐐圭殑Date瀵硅薄
-                dateList.add(sdf.format(startTime));
-                break;
-            case "YESTERDAY":
-                // 鏄ㄥぉ锛氫粠鏄ㄥぉ0鐐瑰埌鏄ㄥぉ23:59:59.999
-                calendar.setTime(new Date());
-                calendar.add(Calendar.DATE, -1); // 鏃ユ湡鍑�1澶╋紙鍙樹负鏄ㄥぉ锛�
+        if (queryParam.getYear() != null && queryParam.getMonth() != null) {
+            Date[] dates = CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth());
+            startTime = dates[0];
+            endTime = dates[1];
+        }else {
+            switch (queryParam.getSearchType()) {
+                case "TODAY":
+                    // 浠婂ぉ锛氫粠浠婂ぉ0鐐瑰埌鐜板湪
+                    calendar.setTime(new Date()); // 閲嶇疆涓哄綋鍓嶆椂闂�
+                    calendar.set(Calendar.HOUR_OF_DAY, 0); // 灏忔椂璁句负0锛�24灏忔椂鍒讹級
+                    calendar.set(Calendar.MINUTE, 0);      // 鍒嗛挓璁句负0
+                    calendar.set(Calendar.SECOND, 0);      // 绉掕涓�0
+                    calendar.set(Calendar.MILLISECOND, 0); // 姣璁句负0
+                    startTime = calendar.getTime();        // 寰楀埌浠婂ぉ0鐐圭殑Date瀵硅薄
+                    dateList.add(sdf.format(startTime));
+                    break;
+                case "YESTERDAY":
+                    // 鏄ㄥぉ锛氫粠鏄ㄥぉ0鐐瑰埌鏄ㄥぉ23:59:59.999
+                    calendar.setTime(new Date());
+                    calendar.add(Calendar.DATE, -1); // 鏃ユ湡鍑�1澶╋紙鍙樹负鏄ㄥぉ锛�
 
-                // 璁剧疆鏄ㄥぉ0鐐�
-                calendar.set(Calendar.HOUR_OF_DAY, 0);
-                calendar.set(Calendar.MINUTE, 0);
-                calendar.set(Calendar.SECOND, 0);
-                calendar.set(Calendar.MILLISECOND, 0);
-                startTime = calendar.getTime();
+                    // 璁剧疆鏄ㄥぉ0鐐�
+                    calendar.set(Calendar.HOUR_OF_DAY, 0);
+                    calendar.set(Calendar.MINUTE, 0);
+                    calendar.set(Calendar.SECOND, 0);
+                    calendar.set(Calendar.MILLISECOND, 0);
+                    startTime = calendar.getTime();
 
-                // 璁剧疆鏄ㄥぉ23:59:59.999
-                calendar.set(Calendar.HOUR_OF_DAY, 23);
-                calendar.set(Calendar.MINUTE, 59);
-                calendar.set(Calendar.SECOND, 59);
-                calendar.set(Calendar.MILLISECOND, 999);
-                endTime = calendar.getTime();
+                    // 璁剧疆鏄ㄥぉ23:59:59.999
+                    calendar.set(Calendar.HOUR_OF_DAY, 23);
+                    calendar.set(Calendar.MINUTE, 59);
+                    calendar.set(Calendar.SECOND, 59);
+                    calendar.set(Calendar.MILLISECOND, 999);
+                    endTime = calendar.getTime();
 
-                dateList.add(sdf.format(startTime));
-                break;
-            case "LAST_SEVEN":
-                // 杩囧幓涓冨ぉ锛氫粠7澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�7澶╋級
-                calendar.setTime(new Date());
-                calendar.add(Calendar.DATE, -6); // 鏃ユ湡鍑�6澶╋紙7澶╁墠鐨勪粖澶╋級
+                    dateList.add(sdf.format(startTime));
+                    break;
+                case "LAST_SEVEN":
+                    // 杩囧幓涓冨ぉ锛氫粠7澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�7澶╋級
+                    calendar.setTime(new Date());
+                    calendar.add(Calendar.DATE, -6); // 鏃ユ湡鍑�6澶╋紙7澶╁墠鐨勪粖澶╋級
 
-                // 璁剧疆7澶╁墠0鐐�
-                calendar.set(Calendar.HOUR_OF_DAY, 0);
-                calendar.set(Calendar.MINUTE, 0);
-                calendar.set(Calendar.SECOND, 0);
-                calendar.set(Calendar.MILLISECOND, 0);
-                startTime = calendar.getTime();
+                    // 璁剧疆7澶╁墠0鐐�
+                    calendar.set(Calendar.HOUR_OF_DAY, 0);
+                    calendar.set(Calendar.MINUTE, 0);
+                    calendar.set(Calendar.SECOND, 0);
+                    calendar.set(Calendar.MILLISECOND, 0);
+                    startTime = calendar.getTime();
 
-                days = 7;
-                // 寰幆鐢熸垚7澶╃殑鏃ユ湡瀛楃涓�
-                Calendar tempCalendar = Calendar.getInstance();
-                tempCalendar.setTime(startTime);
-                for (int i = 0; i < days; i++) {
-                    dateList.add(sdf.format(tempCalendar.getTime()));
-                    tempCalendar.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶�
-                }
-                break;
-            case "LAST_THIRTY":
-                // 杩囧幓30澶╋細浠�30澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�30澶╋級
-                calendar.setTime(new Date());
-                calendar.add(Calendar.DATE, -29); // 鏃ユ湡鍑�29澶╋紙30澶╁墠鐨勪粖澶╋級
+                    days = 7;
+                    // 寰幆鐢熸垚7澶╃殑鏃ユ湡瀛楃涓�
+                    Calendar tempCalendar = Calendar.getInstance();
+                    tempCalendar.setTime(startTime);
+                    for (int i = 0; i < days; i++) {
+                        dateList.add(sdf.format(tempCalendar.getTime()));
+                        tempCalendar.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶�
+                    }
+                    break;
+                case "LAST_THIRTY":
+                    // 杩囧幓30澶╋細浠�30澶╁墠0鐐瑰埌鐜板湪锛堝惈浠婂ぉ鍏�30澶╋級
+                    calendar.setTime(new Date());
+                    calendar.add(Calendar.DATE, -29); // 鏃ユ湡鍑�29澶╋紙30澶╁墠鐨勪粖澶╋級
 
-                // 璁剧疆30澶╁墠0鐐�
-                calendar.set(Calendar.HOUR_OF_DAY, 0);
-                calendar.set(Calendar.MINUTE, 0);
-                calendar.set(Calendar.SECOND, 0);
-                calendar.set(Calendar.MILLISECOND, 0);
-                startTime = calendar.getTime();
+                    // 璁剧疆30澶╁墠0鐐�
+                    calendar.set(Calendar.HOUR_OF_DAY, 0);
+                    calendar.set(Calendar.MINUTE, 0);
+                    calendar.set(Calendar.SECOND, 0);
+                    calendar.set(Calendar.MILLISECOND, 0);
+                    startTime = calendar.getTime();
 
-                days = 30;
-                // 寰幆鐢熸垚30澶╃殑鏃ユ湡瀛楃涓�
-                Calendar tempCalendar30 = Calendar.getInstance();
-                tempCalendar30.setTime(startTime);
-                for (int i = 0; i < days; i++) {
-                    dateList.add(sdf.format(tempCalendar30.getTime()));
-                    tempCalendar30.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶�
-                }
-                break;
-            default:
-                return Result.error("涓嶆敮鎸佺殑鏃堕棿鑼冨洿绫诲瀷");
+                    days = 30;
+                    // 寰幆鐢熸垚30澶╃殑鏃ユ湡瀛楃涓�
+                    Calendar tempCalendar30 = Calendar.getInstance();
+                    tempCalendar30.setTime(startTime);
+                    for (int i = 0; i < days; i++) {
+                        dateList.add(sdf.format(tempCalendar30.getTime()));
+                        tempCalendar30.add(Calendar.DATE, 1); // 姣忓ぉ绱姞1澶�
+                    }
+                    break;
+                default:
+                    return Result.error("涓嶆敮鎸佺殑鏃堕棿鑼冨洿绫诲瀷");
+            }
         }
+
         if ("goods".equals(queryParam.getCurrentType())){
             List<Map<String, Object>> maps = baseMapper.selectViewAndCompletionRateCountByDay(startTime, endTime,queryParam.getCurrentLimit());
             Map<String,Long> viewPrintMap = maps.stream()

--
Gitblit v1.8.0