From 4fc953ed501fba27cae34dbbaa69e7e591d21396 Mon Sep 17 00:00:00 2001
From: Mlxa0324 <mlx950324@163.com>
Date: Mon, 20 Mar 2023 00:00:20 +0800
Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=9C=80=E8=A6=81=E7=BB=AD?=
 =?UTF-8?q?=E7=BA=A6=E7=9A=84=E6=8E=88=E6=9D=83=E5=BA=94=E7=94=A8=E5=92=8C?=
 =?UTF-8?q?=E6=8E=88=E6=9D=83=E8=AF=BE=E7=A8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/core/service/CoreDictService.java   | 14 ++--
 ...gesJurisdictionCurriculumResourcesDao.java | 14 ++++
 ...egesJurisdictionExperimentalSystemDao.java | 13 ++++
 .../jlw/service/WebPlatformService.java       | 75 ++++++++++++++++++-
 .../com/ibeetl/jlw/web/IndexController.java   | 36 +++++++++
 ...CollegesJurisdictionCurriculumResources.md | 15 +++-
 ...sCollegesJurisdictionExperimentalSystem.md | 17 ++++-
 7 files changed, 167 insertions(+), 17 deletions(-)

diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
index d6d6f253..cb785572 100644
--- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
+++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java
@@ -271,18 +271,14 @@ public class CoreDictService extends CoreBaseService<CoreDict> {
      * @return
      */
     public String getOrDefault(String type, String defaultValue) {
-        List<CoreDict> passRateList = findAllByType(type);
-        if (ObjectUtil.isNotEmpty(passRateList)) {
-            String passRateValue = passRateList.stream().sorted(((o1, o2) -> o2.getSort() - o1.getSort())).findFirst().get().getValue();
-            if (ObjectUtil.isNotEmpty(passRateValue)) {
-                return passRateValue;
+        List<CoreDict> list = findAllByType(type);
+        if (ObjectUtil.isNotEmpty(list)) {
+            String value = list.stream().sorted(((o1, o2) -> o2.getSort() - o1.getSort())).findFirst().get().getValue();
+            if (ObjectUtil.isNotEmpty(value)) {
+                return value;
             }
         }
         return defaultValue;
     }
 
-   
-
-    
-  
 }
diff --git a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionCurriculumResourcesDao.java b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionCurriculumResourcesDao.java
index b18419e1..76b66d8a 100644
--- a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionCurriculumResourcesDao.java
+++ b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionCurriculumResourcesDao.java
@@ -2,9 +2,11 @@ package com.ibeetl.jlw.dao;
 
 import com.ibeetl.jlw.entity.CourseInfo;
 import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionCurriculumResources;
+import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionExperimentalSystem;
 import com.ibeetl.jlw.web.query.UniversitiesCollegesJurisdictionCurriculumResourcesQuery;
 import org.beetl.sql.core.engine.PageQuery;
 import org.beetl.sql.mapper.BaseMapper;
+import org.beetl.sql.mapper.annotation.Param;
 import org.beetl.sql.mapper.annotation.SqlResource;
 import org.beetl.sql.mapper.annotation.Update;
 import org.springframework.stereotype.Repository;
@@ -49,4 +51,16 @@ public interface UniversitiesCollegesJurisdictionCurriculumResourcesDao extends
      * @return
      */
     List<UniversitiesCollegesJurisdictionCurriculumResources> getAllOverdueAuth();
+
+    /**
+     * 功能描述: <br>
+     * 获取所有的过期的授权课程, 指定前移几天和后移几天
+     *
+     * @param beforeDays
+     * @param afterDays
+     * @return {@link List<  UniversitiesCollegesJurisdictionExperimentalSystem >}
+     * @Author: lx
+     * @Date: 2023/3/19 23:38
+     */
+    List<UniversitiesCollegesJurisdictionCurriculumResources> getAllOverdueAuthByBeforeAndAfterDays(@Param("beforeDays") Long beforeDays, @Param("afterDays") Long afterDays);
 }
\ No newline at end of file
diff --git a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java
index 55cf30be..f12bfee1 100644
--- a/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java
+++ b/web/src/main/java/com/ibeetl/jlw/dao/UniversitiesCollegesJurisdictionExperimentalSystemDao.java
@@ -4,6 +4,7 @@ import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionExperimentalSystem;
 import com.ibeetl.jlw.web.query.UniversitiesCollegesJurisdictionExperimentalSystemQuery;
 import org.beetl.sql.core.engine.PageQuery;
 import org.beetl.sql.mapper.BaseMapper;
+import org.beetl.sql.mapper.annotation.Param;
 import org.beetl.sql.mapper.annotation.SqlResource;
 import org.beetl.sql.mapper.annotation.Update;
 import org.springframework.stereotype.Repository;
@@ -30,4 +31,16 @@ public interface UniversitiesCollegesJurisdictionExperimentalSystemDao extends B
      * @return
      */
     List<UniversitiesCollegesJurisdictionExperimentalSystem> getAllOverdueAuth();
+
+    /**
+     * 功能描述: <br>
+     * 获取所有的过期的授权应用, 指定前移几天和后移几天
+     *
+     * @param beforeDays
+     * @param afterDays
+     * @return {@link List< UniversitiesCollegesJurisdictionExperimentalSystem>}
+     * @Author: lx
+     * @Date: 2023/3/19 23:38
+     */
+    List<UniversitiesCollegesJurisdictionExperimentalSystem> getAllOverdueAuthByBeforeAndAfterDays(@Param("beforeDays") Long beforeDays, @Param("afterDays") Long afterDays);
 }
\ No newline at end of file
diff --git a/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java b/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java
index 8d4193f4..635ee3df 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/WebPlatformService.java
@@ -1,5 +1,6 @@
 package com.ibeetl.jlw.service;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.EnumUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -7,27 +8,32 @@ import cn.hutool.core.util.StrUtil;
 import cn.jlw.token.TokenService;
 import com.ibeetl.admin.console.service.RoleConsoleService;
 import com.ibeetl.admin.console.service.UserConsoleService;
+import com.ibeetl.admin.core.entity.CoreDict;
 import com.ibeetl.admin.core.entity.CoreOrg;
 import com.ibeetl.admin.core.entity.CoreRole;
 import com.ibeetl.admin.core.entity.CoreUser;
 import com.ibeetl.admin.core.enums.MenuEnums;
 import com.ibeetl.admin.core.rbac.UserLoginInfo;
+import com.ibeetl.admin.core.service.CoreDictService;
 import com.ibeetl.admin.core.service.CorePlatformService;
 import com.ibeetl.admin.core.service.CoreUserService;
 import com.ibeetl.admin.core.util.HttpRequestLocal;
-import com.ibeetl.jlw.entity.Student;
-import com.ibeetl.jlw.entity.StudentExtendSchoolInfo;
-import com.ibeetl.jlw.entity.Teacher;
-import com.ibeetl.jlw.entity.TeacherExtendSchoolInfo;
+import com.ibeetl.jlw.dao.UniversitiesCollegesJurisdictionCurriculumResourcesDao;
+import com.ibeetl.jlw.dao.UniversitiesCollegesJurisdictionExperimentalSystemDao;
+import com.ibeetl.jlw.entity.*;
+import com.ibeetl.jlw.web.IndexController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static cn.hutool.core.util.ObjectUtil.defaultIfBlank;
+import static cn.hutool.core.util.ObjectUtil.defaultIfNull;
 import static com.ibeetl.admin.core.service.CorePlatformService.*;
 
 
@@ -50,6 +56,12 @@ public class WebPlatformService {
     @Autowired private UserConsoleService userConsoleService;
     @Autowired
     private RoleConsoleService roleConsoleService;
+    @Autowired
+    private UniversitiesCollegesJurisdictionExperimentalSystemDao universitiesCollegesJurisdictionExperimentalSystemDao;
+    @Autowired
+    private UniversitiesCollegesJurisdictionCurriculumResourcesDao universitiesCollegesJurisdictionCurriculumResourcesDao;
+    @Autowired
+    private CoreDictService coreDictService;
 
     /**
      * 根据身份,将用户信息存到Session中
@@ -271,4 +283,59 @@ public class WebPlatformService {
 
         return userId;
     }
+
+    /**
+     * 功能描述: <br>
+     * 获取快要过期的授权应用和理论课程类课程
+     *
+     * @Author: lx
+     * @Date: 2023/3/19 22:49
+     */
+    public List<IndexController.AuthResourcesAndSystemInfo> getAuthResourcesAndSystemInfo() {
+
+        // 返回值
+        List<IndexController.AuthResourcesAndSystemInfo> result = new ArrayList<>(10);
+
+        // 数据字典中,授权相关的通知时间配置
+        List<CoreDict> authSettingDict = coreDictService.findAllByType("auth_setting");
+
+        // 查询到期前多少天,会给弹框提醒,没查询到数据字典的话,默认10天
+        String beforeSendDayAsString = authSettingDict.stream().filter(item -> item.getName().equals("before_send_day")).map(item -> item.getValue()).findFirst().orElse("15");
+        // 查询到期后多少天,继续给弹框提醒,直到多少天后,没查询到数据字典的话,默认3天
+        String afterSendDayAsString = authSettingDict.stream().filter(item -> item.getName().equals("after_send_day")).map(item -> item.getValue()).findFirst().orElse("3");
+
+        Long beforeDays = Long.valueOf(beforeSendDayAsString);
+        Long afterDays = Long.valueOf(afterSendDayAsString);
+
+        // 查询需要通知续约的应用和课程
+        List<UniversitiesCollegesJurisdictionExperimentalSystem> systemList =
+                universitiesCollegesJurisdictionExperimentalSystemDao.getAllOverdueAuthByBeforeAndAfterDays(beforeDays, afterDays);
+        List<UniversitiesCollegesJurisdictionCurriculumResources> resourcesList =
+                universitiesCollegesJurisdictionCurriculumResourcesDao.getAllOverdueAuthByBeforeAndAfterDays(beforeDays, afterDays);
+
+        // 快要到期的数据处理
+        List<IndexController.AuthResourcesAndSystemInfo> authApplicationList = systemList.stream().map(item -> {
+            IndexController.AuthResourcesAndSystemInfo info = new IndexController.AuthResourcesAndSystemInfo();
+            info.setName(item.get("name") + "");
+            info.setUseEndTime(item.getUseEndTime());
+            info.setLastDay(DateUtil.betweenDay(DateUtil.date(), item.getUseEndTime(), true));
+            info.setType(defaultIfNull(item.get("type"), "应用授权") + "");
+            return info;
+        }).collect(Collectors.toList());
+
+        // 快要到期的数据处理
+        List<IndexController.AuthResourcesAndSystemInfo> authCourseInfoList = resourcesList.stream().map(item -> {
+            IndexController.AuthResourcesAndSystemInfo info = new IndexController.AuthResourcesAndSystemInfo();
+            info.setName(defaultIfNull(item.get("name"), "") + "");
+            info.setUseEndTime(item.getUseEndTime());
+            info.setLastDay(DateUtil.betweenDay(DateUtil.date(), item.getUseEndTime(), true));
+            info.setType(defaultIfNull(item.get("type"), "课程授权") + "");
+            return info;
+        }).collect(Collectors.toList());
+
+        result.addAll(authApplicationList);
+        result.addAll(authCourseInfoList);
+
+        return result;
+    }
 }
diff --git a/web/src/main/java/com/ibeetl/jlw/web/IndexController.java b/web/src/main/java/com/ibeetl/jlw/web/IndexController.java
index eff45393..14b6e0ed 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/IndexController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/IndexController.java
@@ -36,6 +36,7 @@ import com.ibeetl.jlw.dao.UniversitiesCollegesDao;
 import com.ibeetl.jlw.entity.*;
 import com.ibeetl.jlw.service.*;
 import com.ibeetl.jlw.web.query.CompetitionQuery;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -1080,4 +1081,39 @@ public class IndexController {
 		return environment.getProperty("weinxin.auth-text-value", "kR8QcYpBTyrYJWvG");
 	}
 
+
+	@Data
+	public static class AuthResourcesAndSystemInfo {
+		/**
+		 * 对应名称
+		 */
+		private String name;
+		/**
+		 * 最后使用时间
+		 */
+		private Date useEndTime;
+		/**
+		 * 剩余天数
+		 */
+		private Long lastDay;
+		/**
+		 * 类型
+		 */
+		private String type;
+	}
+
+	/**
+	 * 功能描述: <br>
+	 * 获取快要过期的授权应用和理论课程类课程
+	 *
+	 * @param coreUser
+	 * @return {@link JsonResult< List< AuthResourcesAndSystemInfo>>}
+	 * @Author: lx
+	 * @Date: 2023/3/19 22:49
+	 */
+	@GetMapping("getAuthResourcesAndSystemInfo.json")
+	@ResponseBody
+	public JsonResult<List<AuthResourcesAndSystemInfo>> getAuthResourcesAndSystemInfo(@SCoreUser CoreUser coreUser) {
+		return JsonResult.success(webPlatformService.getAuthResourcesAndSystemInfo());
+	}
 }
diff --git a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md
index 1cc4a77a..f02751da 100644
--- a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md
+++ b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md
@@ -409,7 +409,18 @@ getAllOverdueAuth
 ===
 * 获取所有的过期的授权课程
   
-  select *
+  select t.*, ta.course_info_name as `name`, '课程授权' as `type`
   from universities_colleges_jurisdiction_curriculum_resources t
+  left join course_info ta on ta.course_info_id = t.course_info_id
   where not now() between t.use_start_time and t.use_end_time
-  
\ No newline at end of file
+
+getAllOverdueAuthByBeforeAndAfterDays
+===
+* 获取所有的过期的授权应用, 指定前移几天和后移几天
+  
+  select t.*, ta.course_info_name as `name`, '课程授权' as `type`
+  from universities_colleges_jurisdiction_curriculum_resources t
+  left join course_info ta on ta.course_info_id = t.course_info_id
+  where 1 = 1
+  AND now() between CONCAT(DATE_FORMAT(date_add(t.use_start_time, interval -#{beforeDays} day), '%Y-%m-%d'), ' 00:00:00')
+  AND CONCAT(DATE_FORMAT(date_add(t.use_end_time, interval #{afterDays} day), '%Y-%m-%d'), ' 23:59:59')
diff --git a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md
index da52e936..7a0ef20b 100644
--- a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md
+++ b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionExperimentalSystem.md
@@ -217,6 +217,19 @@ getAllOverdueAuth
 ===
 * 获取所有的过期的授权应用
 
-  select *
+  select t.*, ta.application_name as `name`, '应用授权' as `type`
   from universities_colleges_jurisdiction_experimental_system t
-  where not now() between t.use_start_time and t.use_end_time
\ No newline at end of file
+  left join resources_application ta on ta.resources_application_id = t.type_id
+  where not now() between t.use_start_time and t.use_end_time
+
+getAllOverdueAuthByBeforeAndAfterDays
+===
+* 获取所有的过期的授权应用, 指定前移几天和后移几天
+
+  select t.*, ta.application_name as `name`, '应用授权' as `type`
+  from universities_colleges_jurisdiction_experimental_system t
+  left join resources_application ta on ta.resources_application_id = t.type_id
+  where 1 = 1
+  AND now() between CONCAT(DATE_FORMAT(date_add(t.use_start_time, interval -#{beforeDays} day), '%Y-%m-%d'), ' 00:00:00')
+    AND CONCAT(DATE_FORMAT(date_add(t.use_end_time, interval #{afterDays} day), '%Y-%m-%d'), ' 23:59:59')
+