diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoEventRecordServiceImplement.java b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoEventRecordServiceImplement.java index 26e783a..14afa78 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoEventRecordServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/implement/GaoEventRecordServiceImplement.java @@ -282,13 +282,29 @@ public class GaoEventRecordServiceImplement extends AbstractEntityService pageRankByRange(GaoEventRecordRankPage page) { TimiException.required(page.getStoreId(), "not found page.storeId"); - page.setTodayDateValue(dateValue(Time.now())); + validateRankPage(page); + if (page.getRankType() == GaoEventRecordRankPage.RankType.CONTINUOUS_DAYS) { + page.setTodayDateValue(dateValue(Time.now())); + } PageResult result = new PageResult<>(); result.setTotal(mapper.countRankByRange(page)); result.setList(mapper.selectRankByRange(page)); return result; } + /// 校验登记数值排行的事件范围 + /// + /// @param page 排行榜查询请求 + private void validateRankPage(GaoEventRecordRankPage page) { + if (page.getRankType() != GaoEventRecordRankPage.RankType.TOTAL_NUMBER_VALUE) { + return; + } + List eventIdList = page.getEventIdList(); + TimiException.requiredTrue(eventIdList != null && eventIdList.size() == 1, "按登记数值排行必须选择单个事件"); + GaoEvent event = eventService.mapByIdList(eventIdList).get(eventIdList.get(0)); + TimiException.requiredTrue(event != null && event.getValueType() == GaoEvent.ValueType.NUMBER, "按登记数值排行只能选择 NUMBER 事件"); + } + private void checkEventPermission(GaoEvent event) { List roleCodeList = eventService.listRoleCode(event.getId()); TimiException.requiredTrue(roleCodeList != null && !roleCodeList.isEmpty(), "登记事件未配置可登记角色"); diff --git a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoCustomerEventRankView.java b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoCustomerEventRankView.java index db3a492..b7ea82f 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoCustomerEventRankView.java +++ b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoCustomerEventRankView.java @@ -29,6 +29,9 @@ public class GaoCustomerEventRankView { /// 最近连续登记天数 private Long recentContinuousEventDays; + /// 登记数值合计 + private Long totalNumberValue; + /// 最后登记时间 private Long latestRegisteredAt; } diff --git a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoEventRecordRankPage.java b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoEventRecordRankPage.java index cffd255..87a0786 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/vo/GaoEventRecordRankPage.java +++ b/src/main/java/com/imyeyu/api/modules/gao/vo/GaoEventRecordRankPage.java @@ -41,6 +41,8 @@ public class GaoEventRecordRankPage extends BasePage { /// 按累计登记次数 TOTAL_COUNT, /// 按最近连续登记天数 - CONTINUOUS_DAYS + CONTINUOUS_DAYS, + /// 按登记数值合计 + TOTAL_NUMBER_VALUE } } diff --git a/src/main/resources/mapper/timi-server/gao/GaoEventRecordMapper.xml b/src/main/resources/mapper/timi-server/gao/GaoEventRecordMapper.xml index f64c31c..2b9cbdc 100644 --- a/src/main/resources/mapper/timi-server/gao/GaoEventRecordMapper.xml +++ b/src/main/resources/mapper/timi-server/gao/GaoEventRecordMapper.xml @@ -160,6 +160,9 @@ #{eventId} + + AND r.`number_value` IS NOT NULL +