Parcourir la source

refactor:完成系统身份标识由学号至手机号的重构工作

BaiQi il y a 1 an
Parent
commit
1e1f1deafe

+ 7 - 6
src/main/java/com/njuzr/eaibackend/config/JWTAuthenticationFilter.java

@@ -52,8 +52,9 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
 
         try {
             if (token != null) {
-                String username = jwtTokenUtil.parseToken(token);
-                log.info("解析出username:" + username);
+                // 注意提取到的是手机号
+                String phone = jwtTokenUtil.parseToken(token);
+                log.info("解析出phone:" + phone);
                 Map<String, Object> userInfoMap = jwtTokenUtil.parseClaim(token).getBody().get("user_info", Map.class);
 
                 // 不为空则认为是门户请求
@@ -63,7 +64,7 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
                     Integer pid = Integer.valueOf(userInfoMap.get("id").toString());
                     String name = userInfoMap.get("name").toString();
                     String email = userInfoMap.get("email").toString();
-                    String phone = userInfoMap.get("phone").toString();
+                    String username = userInfoMap.get("username").toString();
                     Role role = Role.valueOf(userInfoMap.get("role").toString());
                     // 如果EAI数据库中没有该用户,则添加该用户
                     if (!userService.userExists(pid)) {
@@ -81,12 +82,12 @@ public class JWTAuthenticationFilter extends OncePerRequestFilter {
                         // 否则更新用户信息
                         UserUpdateDTO update = new UserUpdateDTO();
                         update.setContentEmail(email);
-                        update.setPhone(phone);
+//                        update.setPhone(phone);
+                        update.setOfficialNumber(username);
                         userService.updateUserByPid(pid, update);
                     }
                 }
-
-                UserDetails userDetails = userDetailService.loadUserByUsername(username);
+                UserDetails userDetails = userDetailService.loadUserByUsername(phone);
                 log.info("解析出UserDetails:" + userDetails);
 
                 // 设置principal和权限

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

@@ -23,7 +23,9 @@ public class UserUpdateDTO {
 
     private Date birthday; // 生日(选填)
 
-    private String phone; // 联系方式(选填
+    private String phone; // 联系方式(取消
 
     private String contentEmail; // 联系邮箱(选填)
+
+    private String officialNumber;// 学号(选填)
 }

+ 7 - 0
src/main/java/com/njuzr/eaibackend/mapper/UserMapper.java

@@ -23,6 +23,13 @@ public interface UserMapper extends BaseMapper<User> {
      */
     User selectByOfficialNumber(String officialNumber);
 
+    /**
+     * 通过手机号读取用户
+     * @param phone
+     * @return User
+     */
+    User selectByPhone(String phone);
+
     /**
      * 用户信息更新
      * @param user

+ 4 - 3
src/main/java/com/njuzr/eaibackend/service/MyUserDetailService.java

@@ -33,10 +33,11 @@ public class MyUserDetailService implements UserDetailsService {
     }
 
     @Override
-    public UserDetails loadUserByUsername(String officialNumber) throws UsernameNotFoundException {
-        User user = userMapper.selectByOfficialNumber(officialNumber);
+    public UserDetails loadUserByUsername(String phone) throws UsernameNotFoundException {
+//        User user = userMapper.selectByOfficialNumber(officialNumber);
+        User user = userMapper.selectByPhone(phone);
         if (user == null) {
-            throw new UsernameNotFoundException("User not found with officialNumber: " + officialNumber);
+            throw new UsernameNotFoundException("User not found with phone: " + phone);
         }
 
         return ModelMapperUtil.map(user, MyUserDetails.class);

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

@@ -130,10 +130,11 @@ public class AuthenticationServiceImpl implements AuthenticationService {
             // 否则更新用户信息
             UserUpdateDTO update = new UserUpdateDTO();
             update.setContentEmail(email);
-            update.setPhone(phone);
+//            update.setPhone(phone);
+            update.setOfficialNumber(username);
             userService.updateUserByPid(pid, update);
         }
-        UserLoginVO userLoginVO = ModelMapperUtil.map(userMapper.selectByOfficialNumber(phone), UserLoginVO.class);
+        UserLoginVO userLoginVO = ModelMapperUtil.map(userMapper.selectByOfficialNumber(username), UserLoginVO.class);
         userLoginVO.setToken(token);
         return MyResponse.success(userLoginVO);
     }

+ 2 - 1
src/main/java/com/njuzr/eaibackend/service/impl/UserServiceImpl.java

@@ -82,7 +82,8 @@ public class UserServiceImpl implements UserService {
 //                    throw new MyException(501, "数据库插入错误");
 //                }
 //            }
-
+            int state = userMapper.insert(targetUser);
+            log.info("state: {}", state);
             log.info("User创建完毕,User对象如下:" + targetUser);
 
 //            redisTemplate.delete(key); //注册成功后删除验证码

+ 6 - 0
src/main/resources/mapper/UserMapper.xml

@@ -7,6 +7,12 @@
         where official_number = #{officialNumber}
     </select>
 
+    <select id="selectByPhone" resultType="com.njuzr.eaibackend.po.User">
+        select *
+        from users
+        where phone = #{phone}
+    </select>
+
     <select id="selectByOfficialEmail" resultType="com.njuzr.eaibackend.po.User">
         select *
         from users