From dce5a34e89123f487cd22b9a4e5254ffc8a5df75 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期四, 17 九月 2026 20:31:34 +0800
Subject: [PATCH] feat&bug:运营商数据统计修改

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java |   68 ++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 15 deletions(-)

diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
index f46d45d..ffa4b76 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/DataStatisticsController.java
@@ -82,6 +82,49 @@
     }
 
     /**
+     * 运营商统计的门店范围:平台(0)统计平台门店,其他值统计对应运营商门店。
+     */
+    private List<TStore> listStatisticsStores(Integer operatorId, boolean enabledOnly) {
+        LambdaQueryWrapper<TStore> wrapper = new LambdaQueryWrapper<>();
+        if (enabledOnly) {
+            wrapper.eq(TStore::getState, 1);
+        } else {
+            wrapper.ne(TStore::getState, 3);
+        }
+        if (Integer.valueOf(0).equals(operatorId)) {
+            wrapper.eq(TStore::getType, 1);
+        } else {
+            wrapper.eq(TStore::getType, 2).eq(TStore::getOperatorId, operatorId);
+        }
+        return storeService.list(wrapper);
+    }
+
+    /** 获取统计范围门店发生课程、订场或赛事消费的用户。 */
+    private List<Integer> listStatisticsAppUserIds(Integer operatorId) {
+        List<Integer> storeIds = listStatisticsStores(operatorId, true).stream()
+                .map(TStore::getId).collect(Collectors.toList());
+        if (storeIds.isEmpty()) {
+            return Collections.singletonList(-1);
+        }
+        List<Integer> userIds = new ArrayList<>();
+        List<Integer> courseUserIds = coursePackagePaymentClient.queryPaymentCoursePackage(storeIds);
+        if (courseUserIds != null) {
+            userIds.addAll(courseUserIds);
+        }
+        userIds.addAll(siteBookingService.list(new QueryWrapper<SiteBooking>()
+                        .in("storeId", storeIds).eq("state", 1))
+                .stream().map(SiteBooking::getAppUserId).filter(Objects::nonNull)
+                .collect(Collectors.toList()));
+        List<Integer> competitionUserIds = competitionClient.queryAppUserId(storeIds);
+        if (competitionUserIds != null) {
+            userIds.addAll(competitionUserIds);
+        }
+        List<Integer> validUserIds = userIds.stream().filter(Objects::nonNull).distinct()
+                .collect(Collectors.toList());
+        return validUserIds.isEmpty() ? Collections.singletonList(-1) : validUserIds;
+    }
+
+    /**
      * 计算门店每日营业整小时数。相同的起止时间表示全天营业,结束时间早于
      * 开始时间时按跨午夜营业处理。
      */
@@ -207,7 +250,7 @@
         // 根据运营商ID 查询运营商下的所有门店
         if (storeId==null){
             if (operatorId!=null){
-                List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", operatorId).ne("state", 3));
+                List<TStore> stores = listStatisticsStores(operatorId, false);
                 // 拿到该运营商下的门店id集合
                 storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList());
                 query.setStoresIds(storeIds);
@@ -830,10 +873,7 @@
     public Object backYys(Integer id) {
         id = resolveOperatorId(id);
         HashMap<String, Object> map = new HashMap<>();
-        List<Integer> userPt = appUserClient.getUserYYs(id);
-        if(userPt.size()==0){
-            userPt.add(-1);
-        }
+        List<Integer> userPt = listStatisticsAppUserIds(id);
         ArrayList<Object> integers = new ArrayList<>();
         int year = DateUtil.year(new Date());
         List<TBackRecord> thisYear = backRecordService.list(new LambdaQueryWrapper<TBackRecord>().like(TBackRecord::getTime, year).in(TBackRecord::getUserId,userPt));
@@ -1067,7 +1107,7 @@
     @ResponseBody
     public Object stuYys(Integer id) {
         id = resolveOperatorId(id);
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         // 运营商没有门店时,后续查询不能生成 storeId IN ()。
         if (collect1.isEmpty()) {
@@ -1123,7 +1163,7 @@
     @ResponseBody
     public Object courseYys(Integer id) {
         id = resolveOperatorId(id);
-        List<Integer> userPt = appUserClient.getUserYYs(id);
+        List<Integer> userPt = listStatisticsAppUserIds(id);
         HashMap<String, Object> map = coursePackagePaymentClient.coursePt(userPt);
         return map;
     }
@@ -1140,7 +1180,7 @@
     @ResponseBody
     public Object userAndVipYys(Integer id) {
         id = resolveOperatorId(id);
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         //课程
         List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1);
@@ -1193,7 +1233,7 @@
     public Object actYys(Integer id) {
         id = resolveOperatorId(id);
         CompetionVO competionVO = new CompetionVO();
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         //课程
         List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1);
@@ -1212,9 +1252,7 @@
         competionVO.setStoreIds(collect1);
         HashMap<String, Object> map = competitionClient.actYys(competionVO);
 
-        List<TStore> lists = storeService.list(new LambdaQueryWrapper<TStore>()
-                .eq(TStore::getOperatorId, id)
-                .eq(TStore::getState, 1));
+        List<TStore> lists = listStatisticsStores(id, true);
         long l1=0;
         for (TStore tStore : lists) {
             l1 += getStoreOperatingHours(tStore, new Date());
@@ -1275,7 +1313,7 @@
 //        List<User> list = sysUserService.list(new LambdaQueryWrapper<User>().eq(User::getObjectType, 2));
 //        List<Integer> ids = list.stream().map(User::getId).collect(Collectors.toList());
 //        List<Integer> userIds = appUserClient.getUserYYs(id);
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         QueryDataFee queryDataFee = new QueryDataFee(time, collect1);
         // 课程收入
@@ -1653,7 +1691,7 @@
     @ResponseBody
     public Object stuUserDataYys(Integer id) {
         id = resolveOperatorId(id);
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         //课程
         List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1);
@@ -1692,7 +1730,7 @@
     @ResponseBody
     public Object selectYysJx(Integer id) {
         id = resolveOperatorId(id);
-        List<TStore> list4 = storeService.list(new QueryWrapper<TStore>().eq("operatorId", id).eq("state", 1));
+        List<TStore> list4 = listStatisticsStores(id, true);
         List<Integer> collect1 = list4.stream().map(TStore::getId).collect(Collectors.toList());
         //课程
         List<Integer> list = coursePackagePaymentClient.queryPaymentCoursePackage(collect1);

--
Gitblit v1.7.1