diff --git a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoEventRecordController.java b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoEventRecordController.java index 2a97e6c..fbcb2e3 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/controller/GaoEventRecordController.java +++ b/src/main/java/com/imyeyu/api/modules/gao/controller/GaoEventRecordController.java @@ -16,6 +16,7 @@ import com.imyeyu.api.modules.gao.service.GaoEventService; import com.imyeyu.api.modules.gao.service.GaoStoreService; import com.imyeyu.api.modules.gao.vo.GaoCustomerEventRankView; import com.imyeyu.api.modules.gao.vo.GaoEventRecordPage; +import com.imyeyu.api.modules.gao.vo.GaoEventRecordPageResult; import com.imyeyu.api.modules.gao.vo.GaoEventRecordRankPage; import com.imyeyu.api.modules.user.service.RoleChecker; import com.imyeyu.api.modules.user.service.UserLoginService; @@ -64,8 +65,12 @@ public class GaoEventRecordController { @RequireGaoPermission(GaoPermissionCode.EVENT_RECORD_READ) @PostMapping("/list") @JsonView(ResponseView.Public.class) - public PageResult list(@RequestBody GaoEventRecordPage page) { - PageResult result = service.pageByRange(page); + public GaoEventRecordPageResult list(@RequestBody GaoEventRecordPage page) { + PageResult pageResult = service.pageByRange(page); + GaoEventRecordPageResult result = new GaoEventRecordPageResult(); + result.setTotal(pageResult.getTotal()); + result.setList(pageResult.getList()); + result.setNumberValueTotal(resolveNumberValueTotal(page)); { List customerIdList = result.getList().stream().map(GaoEventRecord::getCustomerId).toList(); Map eventMap = eventService.mapByIdList(result.getList().stream().map(GaoEventRecord::getEventId).toList()); @@ -80,6 +85,22 @@ public class GaoEventRecordController { return result; } + /// 根据列表筛选条件返回单个 NUMBER 事件的数值合计 + /// + /// @param page 登记记录范围查询请求 + /// @return 数值合计,不满足单个 NUMBER 事件条件时为空 + private Long resolveNumberValueTotal(GaoEventRecordPage page) { + List eventIdList = page.getEventIdList(); + if (eventIdList == null || eventIdList.size() != 1) { + return null; + } + GaoEvent event = eventService.mapByIdList(eventIdList).get(eventIdList.get(0)); + if (event == null || event.getValueType() != GaoEvent.ValueType.NUMBER) { + return null; + } + return service.sumNumberValueByRange(page); + } + @AOPLog @RequestRateLimit @RequireGaoPermission(GaoPermissionCode.EVENT_RECORD_READ) diff --git a/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoEventRecordMapper.java b/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoEventRecordMapper.java index 3721e73..07d79d4 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoEventRecordMapper.java +++ b/src/main/java/com/imyeyu/api/modules/gao/mapper/GaoEventRecordMapper.java @@ -64,6 +64,12 @@ public interface GaoEventRecordMapper extends BaseMapper /// @return 登记事件记录列表 List selectByRange(GaoEventRecordPage page); + /// 按登记记录列表条件汇总数值 + /// + /// @param page 登记记录范围查询请求 + /// @return 登记数值合计 + Long sumNumberValueByRange(GaoEventRecordPage page); + /// 统计客户登记排行榜总数 /// /// @param page 排行榜分页请求 diff --git a/src/main/java/com/imyeyu/api/modules/gao/service/GaoEventRecordService.java b/src/main/java/com/imyeyu/api/modules/gao/service/GaoEventRecordService.java index 3fb4fb8..7859567 100644 --- a/src/main/java/com/imyeyu/api/modules/gao/service/GaoEventRecordService.java +++ b/src/main/java/com/imyeyu/api/modules/gao/service/GaoEventRecordService.java @@ -32,6 +32,12 @@ public interface GaoEventRecordService extends BaseService pageByRange(GaoEventRecordPage req); + /// 按登记记录列表条件汇总数值 + /// + /// @param req 登记记录范围查询请求 + /// @return 登记数值合计 + Long sumNumberValueByRange(GaoEventRecordPage req); + /// 按时间范围查询客户登记排行榜 /// /// @param page 范围查询请求,不传时间为全部时间 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 5c922fa..26e783a 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 @@ -266,6 +266,12 @@ public class GaoEventRecordServiceImplement extends AbstractEntityService + r.`deleted_at` IS NULL