Commit 290d2977 by 田超

Merge branch 'fixbug/mondayError' into 'master'

bug: [none] 解决周日统计错误的问题

See merge request rays/pcloud-book!1162
parents 46c8b3fe f9ec5215
......@@ -13,6 +13,7 @@ import com.pcloud.book.applet.dao.AppletRecordStatisDao;
import com.pcloud.book.applet.biz.AppletRecordStatisBiz;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
......@@ -109,7 +110,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
}
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1);
monday = CommonUtils.getWeekStart(monday);
Date sunday = DateUtils.addDay(monday, 6);
// 计算本周读书本数,已读新书本数
ReadBookWeekStatisDTO weekStatisDTO = getReadBookWeekStatisDTO(wechatUserId, monday, sunday);
......@@ -198,7 +199,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
}
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1);
monday = CommonUtils.getWeekStart(monday);
List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookSourceWeekStatis(wechatUserId, monday);
if(CollectionUtils.isEmpty(resultList)){
return Lists.newArrayList();
......@@ -273,7 +274,7 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
}
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1);
monday = CommonUtils.getWeekStart(monday);
List<AppletRecordStatisDTO> resultList = appletRecordStatisDao.getBookNewsWeekStatics(wechatUserId, monday);
if(CollectionUtils.isEmpty(resultList)){
return Lists.newArrayList();
......@@ -300,8 +301,8 @@ public class AppletRecordStatisBizImpl implements AppletRecordStatisBiz {
if(StringUtil.isNotEmpty(mondayDate)){
prevWeekDay = DateUtils.getDateByStr(mondayDate);
}
// 校准日期为上周一(加一天是因为这里它把周日当成是一周的起点)
Date prevMonday = DateUtils.addDay(DateUtils.getWeekStart(prevWeekDay), 1);
// 校准日期为上周一
Date prevMonday = CommonUtils.getWeekStart(prevWeekDay);
Date prevSunday = DateUtils.addDay(prevMonday, 6);
if(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE.compareTo(prevMonday) == 1){
......
......@@ -8,6 +8,7 @@ import com.pcloud.book.applet.entity.AppletRecordStatisReport;
import com.pcloud.book.applet.dao.AppletRecordStatisReportDao;
import com.pcloud.book.applet.biz.AppletRecordStatisReportBiz;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
......@@ -105,9 +106,9 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
}
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1);
monday = CommonUtils.getWeekStart(monday);
Date sunday = DateUtils.addDay(monday, 6);
Date thisMonday = DateUtils.addDay(DateUtils.getWeekStart(new Date()), 1);
Date thisMonday = CommonUtils.getWeekStart();
if(monday.compareTo(thisMonday) > -1 || monday.compareTo(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE) == -1){
AppletRecordStatisReport report = new AppletRecordStatisReport();
report.setBeginDate(monday);
......@@ -219,7 +220,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
// 检测上次生成历史记录的时间
String redisKey = AppletConstants.APPLET_RECORD_HISTORY_STATIS_REPORT_LAST_DATE + wechatUserId;
String lastDate = JedisClusterUtils.get(redisKey);
String monday = DateUtils.getReqDate(DateUtils.addDay(DateUtils.getWeekStart(new Date()), 1));
String monday = DateUtils.getReqDate(CommonUtils.getWeekStart());
// 如果本周已经生成过,则return
if(monday.equals(lastDate)){
return;
......@@ -227,7 +228,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
// 本周已经生成记录标识
JedisClusterUtils.set(redisKey, monday, 3600 * 24 * 7);
// 获取开始时间到上周所有的周一
List<Date> allMonday = getAllMonday(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE, DateUtils.addDay(DateUtils.getWeekStart(new Date()), -6));
List<Date> allMonday = getAllMonday(AppletConstants.APPLET_RECORD_STATIS_REPORT_START_DATE, DateUtils.addDay(CommonUtils.getWeekStart(), -7));
if(CollectionUtils.isEmpty(allMonday)){
return;
}
......@@ -283,8 +284,8 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
if(endDate == null){
endDate = new Date();
}
Date beginMonday = DateUtils.addDay(DateUtils.getWeekStart(beginDate), 1);
Date endMonday = DateUtils.addDay(DateUtils.getWeekStart(endDate), 1);
Date beginMonday = CommonUtils.getWeekStart(beginDate);
Date endMonday = CommonUtils.getWeekStart(endDate);
// 如果开始时间比结束时间大,直接返回
if(beginMonday.compareTo(endMonday) == 1){
return mondayList;
......@@ -314,7 +315,7 @@ public class AppletRecordStatisReportBizImpl implements AppletRecordStatisReport
private String builderShareHtml(Long wechatUserId, String mondayDate) {
Date monday = DateUtils.getDateFromString(mondayDate, "yyyy-MM-dd");
// 校准周一
monday = DateUtils.addDay(DateUtils.getWeekStart(monday), 1);
monday = CommonUtils.getWeekStart(monday);
// 直接获取本周分数结果
AppletRecordStatisReport thisWeekReport = appletRecordStatisReportDao.getByWechatUserId(wechatUserId, monday);
if(thisWeekReport == null){
......
......@@ -128,4 +128,42 @@ public class CommonUtils {
}
return result;
}
/**
* 获取指定日期所在周的第一天【周一是每周的起点】
* @param date
* @return
*/
public static Date getWeekStart(Date date) {
Calendar calendar = Calendar.getInstance();
// 设置每周的第一天是星期一
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
calendar.get(3);
calendar.set(7, calendar.getFirstDayOfWeek());
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return calendar.getTime();
}
/**
* 获取指定日期所在周的第一天【周一是每周的起点】
* @param
* @return
*/
public static Date getWeekStart() {
Calendar calendar = Calendar.getInstance();
// 设置每周的第一天是星期一
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(new Date());
calendar.get(3);
calendar.set(7, calendar.getFirstDayOfWeek());
calendar.set(11, 0);
calendar.set(12, 0);
calendar.set(13, 0);
calendar.set(14, 0);
return calendar.getTime();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment