From b6373daa40c3dc17ca107f3666fd252f3b6b0778 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 03 一月 2025 18:34:52 +0800
Subject: [PATCH] 代码

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java |  269 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 191 insertions(+), 78 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java
index 10a5ee5..5b898ac 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java
@@ -19,8 +19,11 @@
 import oshi.driver.mac.net.NetStat;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -78,24 +81,20 @@
     @ApiOperation(value = "根据省名字获取悬停框内统计数",tags = {"web-政策数据中心"})
     @PostMapping(value = "/getByProvinceName/count")
     public R getByProvinceName() {
-        List<TRegion> list1 = regionService.lambdaQuery().groupBy(TRegion::getProvinceName).list();
-        for (TRegion tRegion : list1) {
-
-
-        List<TRegion> list = regionService.lambdaQuery().eq(TRegion::getProvinceName, tRegion.getProvinceName()).list();
-        List<Integer> regionIds = new ArrayList<>();
-        list.forEach(region -> regionIds.add(region.getId()));
-        if (!regionIds.isEmpty()) {
-            Long count = consultationService.lambdaQuery().in(TConsultation::getRegionId, regionIds).count();
-
-
-            tRegion.setCount(count);
-        }else {
-            tRegion.setCount(0L);
+        List<TRegion> regions = regionService.lambdaQuery().groupBy(TRegion::getProvinceName).list();
+        for (TRegion tRegion : regions) {
+            List<TRegion> list = regionService.lambdaQuery().eq(TRegion::getProvinceName, tRegion.getProvinceName()).list();
+            List<Integer> regionIds = new ArrayList<>();
+            list.forEach(region -> regionIds.add(region.getId()));
+            if (!regionIds.isEmpty()) {
+                Long count = consultationService.lambdaQuery().in(TConsultation::getRegionId, regionIds)
+                        .in(TConsultation::getClassificationId,Arrays.asList(1,2,3)).count();
+                tRegion.setCount(count);
+            }else {
+                tRegion.setCount(0L);
+            }
         }
-        }
-        return R.ok(list1);
-
+        return R.ok(regions);
     }
 
 
@@ -104,20 +103,20 @@
     public R<List<TDeclareNotice>> noticelist(@RequestBody ConsultationQuery informationQuery) {
         //获取当前登录人id
         Long userId = tokenService.getLoginUser().getUserId();
-        TUserChange one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
+        TUserChange userChange = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
         List<TDeclareNotice> notices = new ArrayList<>();
-        if (one!=null){
-                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
-            for (TUserChangeDetail tUserChangeDetail : list) {
-                List<TDeclareNotice> list1 = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getRegionId,tUserChangeDetail.getRegionId()).eq(TDeclareNotice::getMajorId, tUserChangeDetail.getMajorId()).eq(TDeclareNotice::getLevel, tUserChangeDetail.getLevelId()).list();
-                notices.addAll(list1);
+        if (userChange!=null){
+                List<TUserChangeDetail> userChangeDetails = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
+            for (TUserChangeDetail tUserChangeDetail : userChangeDetails) {
+                List<TDeclareNotice> declareNotices = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getRegionId,tUserChangeDetail.getRegionId()).eq(TDeclareNotice::getMajorId, tUserChangeDetail.getMajorId()).eq(TDeclareNotice::getLevel, tUserChangeDetail.getLevelId()).list();
+                notices.addAll(declareNotices);
             }
             notices.sort(Comparator.comparing(TDeclareNotice::getCreateTime).reversed());
         }else {
             // 创建 LambdaQueryWrapper 并设置查询条件
-            List<TDeclareNotice> list1 = declareNoticeService.lambdaQuery()
+            List<TDeclareNotice> declareNotices = declareNoticeService.lambdaQuery()
                     .last(" ORDER BY RAND() LIMIT 16").list();
-            notices.addAll(list1);
+            notices.addAll(declareNotices);
         }
         if (notices.size() > 16) {
             // 只保留前 16 条记录
@@ -128,27 +127,83 @@
 
     @ApiOperation(value = "定制推荐-2政策3公示",tags = {"web-首页"})
     @PostMapping(value = "/consultation/list")
-    public R<List<TConsultation>> consultationlist(@RequestParam Integer type) {
-        //获取当前登录人id
-        Long userId = tokenService.getLoginUser().getUserId();
-        TUserChange one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
-        List<TConsultation> notices = new ArrayList<>();
-        if (one!=null){
-            List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
-            for (TUserChangeDetail tUserChangeDetail : list) {
-                List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type).eq(TConsultation::getRegionId,tUserChangeDetail.getRegionId()).eq(TConsultation::getMajorId, tUserChangeDetail.getMajorId()).eq(TConsultation::getLevel, tUserChangeDetail.getLevelId()).list();
-                notices.addAll(list1);
-            }
-            notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
-        }else {
-            // 创建 LambdaQueryWrapper 并设置查询条件
-
+    public R<List<TConsultation>> consultationlist(@RequestParam Integer type, @RequestParam(required = false) Integer regionId, HttpServletRequest request) {
+        String token = request.getHeader("Authorization");
+        TUserChange userChange =null;
+        if(StringUtils.isNotEmpty(token)){
+            //获取当前登录人id
+            Long userId = tokenService.getLoginUser().getUserId();
+            userChange = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
         }
-        List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type).last("ORDER BY RAND() LIMIT 16").list();
-        notices.addAll(list1);
-        if (notices.size() > 16) {
-            // 只保留前 16 条记录
-            notices = new ArrayList<>(notices.subList(0, 16));
+        List<TConsultation> notices = new ArrayList<>();
+
+        if (type==1){
+            if (userChange!=null){
+                List<TUserChangeDetail> userChangeDetails = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
+                List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, type)
+                        .orderByDesc(TConsultation::getClassificationSort,TConsultation::getCreateTime).list();
+                for (TUserChangeDetail tUserChangeDetail : userChangeDetails) {
+                    List<TConsultation> consultationList = consultations.stream().filter(e -> e.getRegionId().equals(tUserChangeDetail.getRegionId())
+                            && e.getMajorId().equals(tUserChangeDetail.getMajorId())
+                            && e.getLevel().equals(tUserChangeDetail.getLevelId())
+                    ).collect(Collectors.toList());
+//                    List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
+//                            .eq(TConsultation::getRegionId,tUserChangeDetail.getRegionId())
+//                            .eq(TConsultation::getMajorId, tUserChangeDetail.getMajorId())
+//                            .eq(TConsultation::getLevel, tUserChangeDetail.getLevelId())
+//                            .orderByDesc(TConsultation::getClassificationSort,TConsultation::getCreateTime).list();
+                    notices.addAll(consultationList);
+                }
+                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
+            }else {
+                // 创建 LambdaQueryWrapper 并设置查询条件
+                TRegion region = regionService.getById(regionId);
+                List<TRegion> regions = regionService.list(Wrappers.lambdaQuery(TRegion.class)
+                        .eq(TRegion::getProvinceName, region.getProvinceName()));
+                List<Integer> regionIds = regions.stream().map(TRegion::getId).collect(Collectors.toList());
+                List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
+                        .in(TConsultation::getRegionId,regionIds)
+                        .orderByDesc(TConsultation::getCreateTime,TConsultation::getClassificationSort).list();
+                notices.addAll(list1);
+                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
+            }
+//            List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type).eq(TConsultation::getIsRecommend,1).last("ORDER BY RAND() LIMIT 16").list();
+//            notices.addAll(list1);
+            if (notices.size() > 2) {
+                // 只保留前 16 条记录
+                notices = new ArrayList<>(notices.subList(0, 2));
+            }
+        }else {
+            if (userChange!=null){
+                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
+                List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, type).list();
+                for (TUserChangeDetail tUserChangeDetail : list) {
+                    List<TConsultation> consultationList = consultations.stream().filter(e -> e.getRegionId().equals(tUserChangeDetail.getRegionId())
+                            && e.getMajorId().equals(tUserChangeDetail.getMajorId())
+                            && e.getLevel().equals(tUserChangeDetail.getLevelId())
+                            && e.getClassificationId().equals(type)
+                    ).collect(Collectors.toList());
+                    notices.addAll(consultationList);
+                }
+                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
+            }else {
+                // 创建 LambdaQueryWrapper 并设置查询条件
+                TRegion region = regionService.getById(regionId);
+                List<TRegion> regions = regionService.list(Wrappers.lambdaQuery(TRegion.class)
+                        .eq(TRegion::getProvinceName, region.getProvinceName()));
+                List<Integer> regionIds = regions.stream().map(TRegion::getId).collect(Collectors.toList());
+                List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
+                        .in(TConsultation::getRegionId,regionIds)
+                        .orderByDesc(TConsultation::getCreateTime,TConsultation::getClassificationSort).list();
+                notices.addAll(list1);
+                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
+            }
+//            List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type).last("ORDER BY RAND() LIMIT 16").list();
+//            notices.addAll(list1);
+            if (notices.size() > 2) {
+                // 只保留前 16 条记录
+                notices = new ArrayList<>(notices.subList(0, 2));
+            }
         }
         return R.ok(notices);
     }
@@ -159,15 +214,15 @@
     @ApiOperation(value = "全国政策数据",tags = {"web-首页"})
     @PostMapping(value = "/total/count")
     public R<CountTotalDto> totalcount() {
-        Long count1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 1).count();
-        Long count2 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 2).count();
-        Long count3 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 3).count();
+        Long noticeCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 1).count();
+        Long fileCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 2).count();
+        Long infoCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 3).count();
         CountTotalDto countTotalDto = new CountTotalDto();
-        countTotalDto.setNoticeCount(count1);
-        countTotalDto.setFileCount(count2);
-        countTotalDto.setInfoCount(count3);
-        Long count4 = committeeService.lambdaQuery().count();
-        countTotalDto.setCommitteeCount(count4);
+        countTotalDto.setNoticeCount(noticeCount);
+        countTotalDto.setFileCount(fileCount);
+        countTotalDto.setInfoCount(infoCount);
+        Long committeeCount = committeeService.lambdaQuery().count();
+        countTotalDto.setCommitteeCount(committeeCount);
         return R.ok(countTotalDto);
     }
 
@@ -185,13 +240,21 @@
     @PostMapping(value = "/allert")
     public R allert() {
         Long userId = tokenService.getLoginUser().getUserId();
-        Object cacheObject = redisCache.getCacheObject("ALLERT:"+userId);
-
-        if (cacheObject!=null){
-            return R.ok(cacheObject);
+        TAppUser appUser = appUserService.getById(userId);
+        Long cacheObject = redisCache.getCacheObject("ALLERT:"+userId);
+        if (cacheObject!=null && appUser.getIsSetPreference() == 1){
+            return R.ok(cacheObject == 1);
         }else {
             return R.ok(false);
         }
+    }
+
+    @ApiOperation(value = "取消顶部提示",tags = {"web-取消顶部提示"})
+    @PostMapping(value = "/cancelAllert")
+    public R cancelAllert() {
+        Long userId = tokenService.getLoginUser().getUserId();
+        redisCache.deleteObject("ALLERT:"+userId);
+        return R.ok();
     }
 
 
@@ -204,7 +267,7 @@
         Long payCount = courseCount -courseFreeCount;
         Long recordsCount = generatedRecordsService.lambdaQuery().count();
         Long infoCount = informationService.lambdaQuery().count();
-        Long infoFreeCount = informationService.lambdaQuery().count();
+        Long infoFreeCount = informationService.lambdaQuery().eq(TInformation::getInformationPrice,new BigDecimal(0)).count();
         Long infoPayCount = infoCount-infoFreeCount;
         ManageCountDto manageCountDto = new ManageCountDto();
         manageCountDto.setUserCount(userCount);
@@ -214,6 +277,7 @@
         manageCountDto.setRecordsCount(recordsCount);
         manageCountDto.setInfoFreeCount(infoFreeCount);
         manageCountDto.setInfoPayCount(infoPayCount);
+        manageCountDto.setInfoCount(infoCount);
         return R.ok(manageCountDto);
     }
 
@@ -246,9 +310,7 @@
     @ApiOperation(value = "订单统计1",tags = {"后台-统计"})
     @PostMapping(value = "/order/count1")
     public R<List<Map<String,String>>> ordercount1(@RequestBody OrderCountQuery orderCountQuery) {
-        List<Map<String,String>> map = new ArrayList<>();
-            map = indexMenuService.count1(orderCountQuery.getStartDate(),orderCountQuery.getEndDate(),orderCountQuery.getPaymentStatus(),orderCountQuery.getDayType());
-
+        List<Map<String,String>> map = indexMenuService.count1(orderCountQuery.getStartDate(),orderCountQuery.getEndDate(),orderCountQuery.getPaymentStatus(),orderCountQuery.getDayType());
         return R.ok(map);
     }
 
@@ -256,26 +318,57 @@
 
     @ApiOperation(value = "推荐资料",tags = {"web-首页"})
     @PostMapping(value = "/information/list")
-    public R<List<TInformation>> information() {
-        //获取当前登录人id
-        Long userId = tokenService.getLoginUser().getUserId();
-        TUserChange one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
+    public R<List<TInformation>> information(@RequestParam(required = false) Integer regionId, HttpServletRequest request) {
+        String token = request.getHeader("Authorization");
+        TUserChange one =null;
+        Long userId;
+        if(StringUtils.isNotEmpty(token)){
+            //获取当前登录人id
+            userId = tokenService.getLoginUser().getUserId();
+            one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
+        }else {
+            userId = -1L;
+        }
         List<TInformation> notices = new ArrayList<>();
         if (one!=null){
             List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
+            List<TInformation> informations = informationService.lambdaQuery().list();
             for (TUserChangeDetail tUserChangeDetail : list) {
-                List<TInformation> list1 = informationService.lambdaQuery().eq(TInformation::getRegionId,tUserChangeDetail.getRegionId()).eq(TInformation::getMajorId, tUserChangeDetail.getMajorId()).eq(TInformation::getLevel, tUserChangeDetail.getLevelId()).list();
-                notices.addAll(list1);
+                List<TInformation> informationsList = informations.stream().filter(e ->
+                        e.getRegionId().equals(tUserChangeDetail.getRegionId())
+                        && e.getMajorId().equals(tUserChangeDetail.getMajorId())
+                        && e.getLevel().equals(tUserChangeDetail.getLevelId())
+                ).collect(Collectors.toList());
+//                List<TInformation> informationsList = informationService.lambdaQuery()
+//                        .eq(TInformation::getRegionId,tUserChangeDetail.getRegionId())
+//                        .eq(TInformation::getMajorId, tUserChangeDetail.getMajorId())
+//                        .eq(TInformation::getLevel, tUserChangeDetail.getLevelId()).list();
+                notices.addAll(informationsList);
             }
             notices.sort(Comparator.comparing(TInformation::getCreateTime).reversed());
-        }
+        }else {
             // 创建 LambdaQueryWrapper 并设置查询条件
-            List<TInformation> list1 = informationService.lambdaQuery().last("ORDER BY RAND() LIMIT 16").list();
+            TRegion region = regionService.getById(regionId);
+            List<TRegion> regions = regionService.list(Wrappers.lambdaQuery(TRegion.class)
+                    .eq(TRegion::getProvinceName, region.getProvinceName()));
+            List<Integer> regionIds = regions.stream().map(TRegion::getId).collect(Collectors.toList());
+            List<TInformation> list1 = informationService.lambdaQuery()
+                    .in(TInformation::getRegionId,regionIds).list();
             notices.addAll(list1);
+            notices.sort(Comparator.comparing(TInformation::getCreateTime).reversed());
+        }
+        // 创建 LambdaQueryWrapper 并设置查询条件
+//        List<TInformation> list1 = informationService.lambdaQuery().last("ORDER BY RAND() LIMIT 16").list();
+//        notices.addAll(list1);
 
         if (notices.size() > 16) {
             // 只保留前 16 条记录
             notices = new ArrayList<>(notices.subList(0, 16));
+        }
+        notices = notices.stream().distinct().collect(Collectors.toList());
+        Set<Long> cacheSet = redisCache.getCacheSet("INFORMATION:" + userId);
+        for (TInformation notice : notices) {
+            notice.setIsCollect(cacheSet.contains(notice.getId())?1:0);
         }
         return R.ok(notices);
     }
@@ -283,24 +376,44 @@
 
     @ApiOperation(value = "推荐课程",tags = {"web-首页"})
     @PostMapping(value = "/course/list")
-    public R<List<TCourse>> course() {
-        //获取当前登录人id
-        Long userId = tokenService.getLoginUser().getUserId();
-        TUserChange one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
+    public R<List<TCourse>> course(@RequestParam(required = false) Integer regionId, HttpServletRequest request) {
+        String token = request.getHeader("Authorization");
+        TUserChange one =null;
+        Long userId;
+        if(StringUtils.isNotEmpty(token)){
+            //获取当前登录人id
+            //获取当前登录人id
+            userId = tokenService.getLoginUser().getUserId();
+            one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
+        }else {
+            userId = -1L;
+        }
         List<TCourse> notices = new ArrayList<>();
         if (one!=null){
             List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
+            List<TCourse> courses = courseService.lambdaQuery().list();
             for (TUserChangeDetail tUserChangeDetail : list) {
-                List<TCourse> list1 = courseService.lambdaQuery().eq(TCourse::getRegionId,tUserChangeDetail.getRegionId()).eq(TCourse::getMajorId, tUserChangeDetail.getMajorId()).eq(TCourse::getLevel, tUserChangeDetail.getLevelId()).list();
-                notices.addAll(list1);
+                List<TCourse> coursesList = courses.stream().filter(e ->
+                        e.getRegionId().equals(tUserChangeDetail.getRegionId())
+                                && e.getMajorId().equals(tUserChangeDetail.getMajorId())
+                                && e.getLevel().equals(tUserChangeDetail.getLevelId())
+                ).collect(Collectors.toList());
+
+                notices.addAll(coursesList);
             }
             notices.sort(Comparator.comparing(TCourse::getCreateTime).reversed());
         }else {
             // 创建 LambdaQueryWrapper 并设置查询条件
-
+            TRegion region = regionService.getById(regionId);
+            List<TRegion> regions = regionService.list(Wrappers.lambdaQuery(TRegion.class)
+                    .eq(TRegion::getProvinceName, region.getProvinceName()));
+            List<Integer> regionIds = regions.stream().map(TRegion::getId).collect(Collectors.toList());
+            List<TCourse> list1 = courseService.lambdaQuery().in(TCourse::getRegionId,regionIds).list();
+            notices.addAll(list1);
+            notices.sort(Comparator.comparing(TCourse::getCreateTime).reversed());
         }
-        List<TCourse> list1 = courseService.lambdaQuery().last("ORDER BY RAND() LIMIT 16").list();
-        notices.addAll(list1);
+//        List<TCourse> list1 = courseService.lambdaQuery().last("ORDER BY RAND() LIMIT 16").list();
+//        notices.addAll(list1);
         if (notices.size() > 16) {
             // 只保留前 16 条记录
             notices = new ArrayList<>(notices.subList(0, 16));

--
Gitblit v1.7.1