jinxia.mo 2 هفته پیش
والد
کامیت
e9a8dc1f78

+ 17 - 6
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyMajorRelationController.java

@@ -91,11 +91,21 @@ public class FrontSyMajorRelationController extends BaseController {
         //是否收藏
         SyMajor syMajor = syMajorService.selectSyMajorByCode(code);
         Boolean isCollect = false;
-        if(null!=syMajor){
-            syMajorOverview.setMarjorId(syMajor.getId());
-            BCustomerMarjors query = new BCustomerMarjors().setStatus(1).setMarjorId(syMajor.getId()).setCustomerCode(SecurityUtils.getLoginUser().getUser().getCode());
-            if(CollectionUtils.isNotEmpty(customerMarjorsService.selectBCustomerMarjorsList(query))){
-                isCollect = true;
+        // 检查用户是否已登录
+        if(null != syMajor && SecurityUtils.getAuthentication() != null
+                && SecurityUtils.getAuthentication().getPrincipal() instanceof LoginUser) {
+            try {
+                syMajorOverview.setMarjorId(syMajor.getId());
+                LoginUser loginUser = (LoginUser) SecurityUtils.getAuthentication().getPrincipal();
+                BCustomerMarjors query = new BCustomerMarjors().setStatus(1)
+                        .setMarjorId(syMajor.getId())
+                        .setCustomerCode(loginUser.getUser().getCode());
+                if(CollectionUtils.isNotEmpty(customerMarjorsService.selectBCustomerMarjorsList(query))){
+                    isCollect = true;
+                }
+            } catch (Exception e) {
+                // 如果查询收藏状态时发生异常,保持isCollect为false
+                isCollect = false;
             }
         }
         syMajorOverview.setIsCollect(isCollect);
@@ -220,6 +230,7 @@ public class FrontSyMajorRelationController extends BaseController {
         } else if(null != batch) {
             query.setType(batch >= 4 ? "专科" : "本科");
         }
+        String location = user.getLocation();
         String examType = null==user?(null==VistorContextHolder.getExamType()?"单招(应届普高)":VistorContextHolder.getExamType().name()):(null==user.getExamType()?"单招(应届普高)":user.getExamType().title());
 //        query.setExamType(ConstantUtil.getExamTypeData(user.getExamType().title()));
 
@@ -230,7 +241,7 @@ public class FrontSyMajorRelationController extends BaseController {
         List<String>  majorListByPlan = new ArrayList<>();
         //湖南:计划中有的专业加入
         if (null != VistorContextHolder.getLocation()){
-            String location = VistorContextHolder.getLocation();
+//            String location = VistorContextHolder.getLocation();
             if ("湖南".equals(location)){
                 majorListByPlan = syMajorService.selectMajorsByPlan(location).stream().map(major->major.getName()).collect(Collectors.toList());
             }

+ 2 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontUniversitiesController.java

@@ -137,7 +137,8 @@ public class FrontUniversitiesController extends BaseController {
             cond.setFilterRank(null);
             cond.setOrderBy(StringUtils.isNotBlank(cond.getOrderBy()) ? cond.getOrderBy() : "code");
         }
-        SysUser user = SecurityUtils.getLoginUser().getUser();
+//        SysUser user = SecurityUtils.getLoginUser().getUser();
+        SysUser user = VistorContextHolder.getContext();
         cond.setEnrollLocation(user.getLocation());
         startPage();
         List<BBusiWishUniversities> arr;

+ 14 - 1
ie-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java

@@ -1,6 +1,8 @@
 package com.ruoyi.framework.security.filter;
 
 import java.io.IOException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import javax.servlet.FilterChain;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -48,7 +50,18 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
             SysUser user = new SysUser();
             user.setUserId(0L);
             user.setUserName("anonymous");
-            user.setLocation(request.getHeader("location"));
+            // 从请求头获取location,如果是URL编码的则进行解码
+            String location = request.getHeader("location");
+            if (StringUtils.isNotBlank(location)) {
+                try {
+                    // 尝试URL解码,如果已经是解码后的值则保持不变
+                    location = URLDecoder.decode(location, StandardCharsets.UTF_8.name());
+                } catch (Exception e) {
+                    // 如果解码失败(说明不是URL编码),使用原始值
+                    // 不做任何处理,使用原始location值
+                }
+            }
+            user.setLocation(location);
             String examType = request.getHeader("examType");
             user.setExamType(null == examType ? null : ExamType.valueOf(examType));
             user.setRegStatus(UserRegStatus.Visitor);