Bläddra i källkod

fix:修改登录流程为portal登录

lalala 1 år sedan
förälder
incheckning
2c0c46cc37

+ 3 - 2
src/main/java/com/njuzr/eaibackend/config/JWTAuthenticationFilter.java

@@ -78,12 +78,14 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
                         reg.setRole(role);
                         reg.setName(name);
                         reg.setPassword("no_password");
-                        userService.createUser(reg);
+                        userService.createUserByPortal(reg);
                     } else {
                         log.info("用户存在,更新用户{}", phone);
                         // 否则更新用户信息
                         UserUpdateDTO update = new UserUpdateDTO();
                         update.setContentEmail(email);
+                        // 同时为账号添加对应权限
+                        update.setRole(role);
 //                        update.setPhone(phone);
                         update.setOfficialNumber(username);
                         userService.updateUserByPid(pid, update);
@@ -96,7 +98,6 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
                 UsernamePasswordAuthenticationToken authentication =
                         new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
                 SecurityContextHolder.getContext().setAuthentication(authentication);
-
             }
 
             chain.doFilter(request, response);

+ 4 - 0
src/main/java/com/njuzr/eaibackend/controller/AuthenticationController.java

@@ -50,4 +50,8 @@ public class AuthenticationController {
     }
 
 
+    @GetMapping("/token")
+    public MyResponse authToken(@RequestParam("token") String token){
+        return authenticationService.authToken(token);
+    }
 }

+ 3 - 0
src/main/java/com/njuzr/eaibackend/dto/user/UserUpdateDTO.java

@@ -1,6 +1,7 @@
 package com.njuzr.eaibackend.dto.user;
 
 import com.njuzr.eaibackend.enums.Gender;
+import com.njuzr.eaibackend.enums.Role;
 import lombok.Data;
 
 import java.util.Date;
@@ -28,4 +29,6 @@ public class UserUpdateDTO {
     private String contentEmail; // 联系邮箱(选填)
 
     private String officialNumber;// 学号(选填)
+
+    private Role role;
 }

+ 2 - 0
src/main/java/com/njuzr/eaibackend/service/AuthenticationService.java

@@ -11,4 +11,6 @@ public interface AuthenticationService {
     MyResponse loginByEmail(EmailLoginDTO emailLoginDTO);
 
     MyResponse loginByPortal(String token);
+
+    MyResponse authToken(String token);
 }

+ 2 - 0
src/main/java/com/njuzr/eaibackend/service/UserService.java

@@ -32,6 +32,8 @@ public interface UserService {
      */
     UserVO createUser(UserRegisterDTO userDTO);
 
+    UserVO createUserByPortal(UserRegisterDTO userDTO);
+
 
     /**
      * 用户更新用户信息

+ 16 - 2
src/main/java/com/njuzr/eaibackend/service/impl/AuthenticationServiceImpl.java

@@ -125,13 +125,14 @@ public class AuthenticationServiceImpl implements AuthenticationService {
             reg.setRole(role);
             reg.setName(name);
             reg.setPassword("no_password");
-            userService.createUser(reg);
+            userService.createUserByPortal(reg);
         } else {
             // 否则更新用户信息
             UserUpdateDTO update = new UserUpdateDTO();
             update.setContentEmail(email);
-//            update.setPhone(phone);
             update.setOfficialNumber(username);
+            update.setRole(role);
+            System.out.println(role);
             userService.updateUserByPid(pid, update);
         }
         UserLoginVO userLoginVO = ModelMapperUtil.map(userMapper.selectByOfficialNumber(username), UserLoginVO.class);
@@ -139,5 +140,18 @@ public class AuthenticationServiceImpl implements AuthenticationService {
         return MyResponse.success(userLoginVO);
     }
 
+    @Override
+    public MyResponse authToken(String token) {
+        String phone = jwtTokenUtil.parseToken(token);
+        System.out.println("official number :" + phone);
+        UserLoginVO userLoginVO = ModelMapperUtil.map(userMapper.selectByPhone(phone), UserLoginVO.class);
+        if(userLoginVO != null){
+            userLoginVO.setToken(token);
+            return MyResponse.success(userLoginVO);
+        } else {
+            return MyResponse.error(400,"登录失败");
+        }
+    }
+
 
 }

+ 23 - 4
src/main/java/com/njuzr/eaibackend/service/impl/CourseServiceImpl.java

@@ -19,6 +19,7 @@ import com.njuzr.eaibackend.utils.PageMapperUtil;
 import com.njuzr.eaibackend.vo.CourseVO;
 import com.njuzr.eaibackend.vo.UserVO;
 import lombok.extern.slf4j.Slf4j;
+import org.bouncycastle.jcajce.provider.symmetric.TEA;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
@@ -29,6 +30,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.net.StandardSocketOptions;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -103,8 +105,25 @@ public class CourseServiceImpl implements CourseService {
             wrapper.eq("course_id", courseQueryDTO.getCourseId());
         }
 
-        if (courseQueryDTO.getTeacherPid() != null) { // courseId直接判断是否相等
-            wrapper.eq("teacher_portal_id", courseQueryDTO.getTeacherPid());
+        // 兼容两种id的查询方式
+        if(courseQueryDTO.getTeacherId() != null && courseQueryDTO.getTeacherPid() != null){
+            wrapper.and(wq -> wq
+                    .eq(courseQueryDTO.getTeacherPid() != null,
+                            "teacher_portal_id", courseQueryDTO.getTeacherPid())
+                    .or()
+                    .eq(courseQueryDTO.getTeacherId() != null,
+                            "teacher_ids", courseQueryDTO.getTeacherId().toString())
+            );
+        } else {
+            if (courseQueryDTO.getTeacherPid() != null  ) { // courseId直接判断是否相等
+                System.out.println(courseQueryDTO.getTeacherPid());
+                wrapper.eq("teacher_portal_id", courseQueryDTO.getTeacherPid());
+            }
+
+            if(courseQueryDTO.getTeacherId() != null){
+                System.out.println(courseQueryDTO.getTeacherPid());
+                wrapper.eq("teacher_ids", courseQueryDTO.getTeacherId());
+            }
         }
 
 //        if (courseQueryDTO.getTeacherId() != null) { // 模糊匹配teacherIds中是否包含这个字段
@@ -164,8 +183,8 @@ public class CourseServiceImpl implements CourseService {
 
         if (targetCourse == null)
             throw MyException.create(HttpStatus.BAD_REQUEST, "课程不存在");
-
-        if (targetUser.getRole() != Role.ADMIN && !targetCourse.getTeacherIds().contains(String.valueOf(userId)))
+        // 兼容两种id的权限判断方式
+        if (targetUser.getRole() != Role.ADMIN && !Objects.equals(targetCourse.getTeacherPid(), targetUser.getPid()) && !targetCourse.getTeacherIds().contains(String.valueOf(userId)))
             throw MyException.create(HttpStatus.BAD_REQUEST, "无权限更新");
 
         Course opeCourse = convertToPO(courseUpdateDTO);

+ 15 - 0
src/main/java/com/njuzr/eaibackend/service/impl/UserServiceImpl.java

@@ -95,6 +95,21 @@ public class UserServiceImpl implements UserService {
     }
 
 
+    @Override
+    public UserVO createUserByPortal(UserRegisterDTO userDTO) {
+        User targetUser = ModelMapperUtil.map(userDTO, User.class);
+        targetUser.setCreateTime(new Date()); // 设置创建时间
+        int state = userMapper.insert(targetUser);
+        log.info("state: {}", state);
+        log.info("User创建完毕,User对象如下:" + targetUser);
+        return ModelMapperUtil.map(targetUser, UserVO.class);
+
+    }
+
+
+
+
+
     /**
      * 更新用户信息
      *