فهرست منبع

feat: 完善手机号

mjh 4 سال پیش
والد
کامیت
aa1b9853b3

+ 0 - 47
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/dto/yuantu/RegisterDTO.java

@@ -1,47 +0,0 @@
-package cn.seecoder.seecoderportalcommon.vo.dto.yuantu;
-
-/**
- * @author wind
- */
-public class RegisterDTO {
-    private String userId;
-    private String name;
-    private String email;
-
-    public String getUserId() {
-        return userId;
-    }
-
-    public String getUsername() {
-        return userId;
-    }
-
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    @Override
-    public String toString() {
-        return "RegisterDTO{" +
-                "userId='" + userId + '\'' +
-                ", name='" + name + '\'' +
-                ", email='" + email + '\'' +
-                '}';
-    }
-}

+ 5 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/security/DomainUserDetailsService.java

@@ -37,8 +37,12 @@ public class DomainUserDetailsService implements UserDetailsService {
     @Transactional(rollbackFor = Exception.class)
     public UserDetails loadUserByUsername(final String phone) throws UsernameNotFoundException {
         log.debug("Authenticating {}", phone);
+        String prefix = "platform";
+        if (phone.startsWith(prefix)) {
+            throw CustomErrorException.userWithoutPhone();
+        }
         User user = userRepository.findByPhone(phone).get();
-        if (user.getRole().equals(UserRole.SUPER)){
+        if (user.getRole().equals(UserRole.SUPER)) {
             user.setRole(user.getSuperInfo().getRole());
         }
         return Optional.of(user)

+ 15 - 6
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/UserService.java

@@ -2,7 +2,6 @@ package cn.seecoder.seecoderportalserver.service;
 
 import cn.seecoder.seecoderportalcommon.vo.UserRole;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
-import cn.seecoder.seecoderportalcommon.vo.dto.yuantu.RegisterDTO;
 import cn.seecoder.seecoderportalserver.domain.User;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.repository.UserRepository;
@@ -190,17 +189,17 @@ public class UserService {
     }
 
     @Transactional(rollbackFor = RuntimeException.class)
-    public UserVO registerYuantuUser(RegisterDTO registerDTO) {
+    public UserVO registerYuantuUser(UserVO registerVO) {
         UserVO userVO = new UserVO();
-        userVO.setUsername(registerDTO.getUserId());
+        userVO.setUsername(registerVO.getUsername());
         userRepository.findByUsername(userVO.getUsername()).ifPresent(user -> {
             throw CustomErrorException.usernameAlreadyExist();
         });
-        userVO.setEmail(registerDTO.getEmail());
+        userVO.setEmail(registerVO.getEmail());
         userRepository.findByEmail(userVO.getEmail()).ifPresent(user -> {
             throw CustomErrorException.emailAlreadyExist();
         });
-        userVO.setName(registerDTO.getName());
+        userVO.setName(registerVO.getName());
         userVO.setPhone("platform_yuantu_" + userVO.getUsername());
         userVO.setRole(UserRole.STUDENT);
         User user = userMapper.userVOToUser(userVO);
@@ -216,7 +215,6 @@ public class UserService {
         log.debug("Created Information for Platform Yuantu User: {}", savedUser);
         return userMapper.userToUserVO(savedUser);
     }
-
     private GitlabUserVO generateGitlabUser(User user) throws CustomErrorException {
         try {
             return gitlabService.createGitlabUser(Math.toIntExact(user.getId()), user.getUsername(), user.getPassword(), user.getEmail());
@@ -224,4 +222,15 @@ public class UserService {
             throw new CustomErrorException("用户名或邮箱已存在,请联系管理人员!");
         }
     }
+
+    public UserVO completePhone(UserVO userVO, String phoneCode){
+        checkPhoneMessageOrThrowError(userVO.getPhone(), phoneCode);
+        User user = userRepository.findByUsername(userVO.getUsername()).orElseThrow(CustomErrorException::usernameNotFound);
+        if(!user.getPhone().startsWith("platform")){
+            throw new CustomErrorException("该用户无需完善手机号!");
+        }
+        user.setPhone(userVO.getPhone());
+        userRepository.save(user);
+        return userMapper.userToUserVO(user);
+    }
 }

+ 12 - 7
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/UserController.java

@@ -3,7 +3,6 @@ package cn.seecoder.seecoderportalserver.web.rest;
 import cn.seecoder.seecoderportalcommon.vo.UserMessageVO;
 import cn.seecoder.seecoderportalcommon.vo.dto.*;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
-import cn.seecoder.seecoderportalcommon.vo.dto.yuantu.RegisterDTO;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.security.DomainUserDetails;
 import cn.seecoder.seecoderportalserver.security.SecurityUtils;
@@ -48,7 +47,7 @@ public class UserController {
     }
 
     @GetMapping("/getInfo")
-    public OkResponse<UserVO> getUserInfo(){
+    public OkResponse<UserVO> getUserInfo() {
         DomainUserDetails user = SecurityUtils.getCurrentUser();
 //        return OkResponse.of(userMapper.domainToUserVO(user));
         return OkResponse.of(userService.getInfo(user.getId()));
@@ -63,7 +62,7 @@ public class UserController {
     }
 
     @PostMapping("/saveEmail")
-    public OkResponse<UserVO> saveEmail(@RequestBody ChangeEmailDTO changeEmailDTO){
+    public OkResponse<UserVO> saveEmail(@RequestBody ChangeEmailDTO changeEmailDTO) {
         DomainUserDetails user = SecurityUtils.getCurrentUser();
         return OkResponse.of(userMapper.userToUserVO(
                 userService.updateUserEmail(user.getId(), changeEmailDTO.getNewEmail())
@@ -71,7 +70,7 @@ public class UserController {
     }
 
     @PostMapping("/saveSignature")
-    public OkResponse<UserVO> saveSignature(@RequestBody ChangeSignatureDTO changeSignatureDTO){
+    public OkResponse<UserVO> saveSignature(@RequestBody ChangeSignatureDTO changeSignatureDTO) {
         DomainUserDetails user = SecurityUtils.getCurrentUser();
         return OkResponse.of(userMapper.userToUserVO(
                 userService.updateUserSignature(user.getId(), changeSignatureDTO.getNewSignature())
@@ -94,16 +93,22 @@ public class UserController {
     }
 
     @GetMapping("/findUserById")
-    public OkResponse<UserVO> findById(@RequestParam Long id){
+    public OkResponse<UserVO> findById(@RequestParam Long id) {
         return OkResponse.of(userService.findUserById(id));
     }
 
     @GetMapping("/findNameByUserName")
     public OkResponse<String> findNameByUserName(@RequestParam String username) {
-        return OkResponse.of(userService.findNameByUserName(username)); }
+        return OkResponse.of(userService.findNameByUserName(username));
+    }
 
     @PostMapping("/register/yuantu")
-    public OkResponse<UserVO> registerYuantuUser(@RequestBody RegisterDTO registerDTO){
+    public OkResponse<UserVO> registerYuantuUser(@RequestBody RegisterDTO registerDTO) {
         return OkResponse.of(userService.registerYuantuUser(registerDTO));
     }
+
+    @PostMapping("/complete/phone")
+    public OkResponse<UserVO> completePhone(@RequestBody RegisterDTO registerDTO) {
+        return OkResponse.of(userService.completePhone(registerDTO, registerDTO.getPhone()));
+    }
 }