From b2116edaa629f2d678b2070d4265e2702b65f127 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期四, 17 九月 2026 17:10:39 +0800
Subject: [PATCH] feat&bug:文档相关数据优化内容
---
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 72 +++++++++++++++++++++++++++++++++++
1 files changed, 71 insertions(+), 1 deletions(-)
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
index 266c167..dee84d2 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -1128,11 +1128,75 @@
return map;
}
+ /** 门店活动统计:仅统计指定门店的赛事及其报名记录。 */
+ @ResponseBody
+ @PostMapping("/base/competition/actStore")
+ public HashMap<String, Object> actStore(@RequestBody CompetionVO vo) {
+ HashMap<String, Object> map = new HashMap<>();
+ if (vo.getStoreIds() == null || vo.getStoreIds().isEmpty()) {
+ vo.setStoreIds(Collections.singletonList(-1));
+ }
+ ArrayList<Integer> years = new ArrayList<>();
+ ArrayList<Integer> yearsUser = new ArrayList<>();
+ int year = DateUtil.year(new Date());
+ for (int statisticYear = year - 9; statisticYear <= year; statisticYear++) {
+ String dateText = String.valueOf(statisticYear);
+ List<Integer> competitionIds = listStoreCompetitionIds(vo, dateText);
+ years.add(competitionIds.size());
+ yearsUser.add(countStoreUserCompetitions(dateText, competitionIds));
+ }
+ map.put("yearData", years);
+ map.put("yearsUser", yearsUser);
+
+ ArrayList<Integer> months = new ArrayList<>();
+ ArrayList<Integer> monthsUser = new ArrayList<>();
+ for (int month = 1; month <= 12; month++) {
+ String dateText = String.format("%d-%02d", year, month);
+ List<Integer> competitionIds = listStoreCompetitionIds(vo, dateText);
+ months.add(competitionIds.size());
+ monthsUser.add(countStoreUserCompetitions(dateText, competitionIds));
+ }
+ map.put("monthData", months);
+ map.put("monthsUser", monthsUser);
+ return map;
+ }
+
private List<Integer> listCompetitionIds(CompetionVO vo, String dateText) {
return cttService.list(buildCompetitionCountWrapper(vo, dateText))
.stream()
.map(Competition::getId)
.collect(Collectors.toList());
+ }
+
+ private List<Integer> listStoreCompetitionIds(CompetionVO vo, String dateText) {
+ Set<String> storeIds = vo.getStoreIds().stream()
+ .filter(Objects::nonNull)
+ .map(String::valueOf)
+ .collect(Collectors.toSet());
+ return cttService.list(new LambdaQueryWrapper<Competition>()
+ .like(Competition::getInsertTime, dateText))
+ .stream()
+ .filter(competition -> containsStoreId(competition.getStoreId(), storeIds))
+ .map(Competition::getId)
+ .collect(Collectors.toList());
+ }
+
+ private boolean containsStoreId(String competitionStoreIds, Set<String> storeIds) {
+ if (competitionStoreIds == null || competitionStoreIds.trim().isEmpty()) {
+ return false;
+ }
+ return Arrays.stream(competitionStoreIds.split(","))
+ .map(String::trim)
+ .anyMatch(storeIds::contains);
+ }
+
+ private int countStoreUserCompetitions(String dateText, List<Integer> competitionIds) {
+ if (competitionIds.isEmpty()) {
+ return 0;
+ }
+ return ucttService.count(new LambdaQueryWrapper<UserCompetition>()
+ .in(UserCompetition::getCompetitionId, competitionIds)
+ .like(UserCompetition::getInsertTime, dateText));
}
private int countUserCompetitions(CompetionVO vo, String dateText, List<Integer> competitionIds) {
@@ -1177,7 +1241,13 @@
@ResponseBody
@PostMapping("/base/competition/queryAppUserId")
public List<Integer> queryAppUserId(@RequestBody List<Integer> storeIds){
- List<Competition> list = competitionService.list(new QueryWrapper<Competition>().in("storeId", storeIds).eq("auditStatus", 2).eq("state", 1));
+ if (storeIds == null || storeIds.isEmpty()) {
+ return new ArrayList<>();
+ }
+ LambdaQueryWrapper<Competition> wrapper = new LambdaQueryWrapper<Competition>()
+ .eq(Competition::getAuditStatus, 2).eq(Competition::getState, 1);
+ appendStoreIdFilter(wrapper, storeIds);
+ List<Competition> list = competitionService.list(wrapper);
List<Integer> collect = list.stream().map(Competition::getId).collect(Collectors.toList());
if(collect.size() == 0){
return new ArrayList<>();
--
Gitblit v1.7.1