Prechádzať zdrojové kódy

feat: 添加seec角色

weijin 4 rokov pred
rodič
commit
9d641de5f2

+ 11 - 1
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/UserRole.java

@@ -35,7 +35,17 @@ public enum UserRole {
     /**
     /**
      * Super身份(Teacher or HR or Staff)
      * Super身份(Teacher or HR or Staff)
      */
      */
-    SUPER("SUPER");
+    SUPER("SUPER"),
+
+    /**
+     * Seecoder开发人员身份
+     */
+    SEEC("SEEC"),
+
+    /**
+     * Seecoder开发人员X身份(更高级的身份,预留)
+     */
+    SEECX("SEECX");
 
 
     private final String role;
     private final String role;
 
 

+ 37 - 0
seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/dto/UpdateUserRoleDTO.java

@@ -0,0 +1,37 @@
+package cn.seecoder.seecoderportalcommon.vo.dto;
+
+import cn.seecoder.seecoderportalcommon.vo.UserRole;
+
+/**
+ * @author kunduin
+ */
+public class UpdateUserRoleDTO {
+
+    private Long id;
+
+    private UserRole role;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public UserRole getRole() {
+        return role;
+    }
+
+    public void setRole(UserRole role) {
+        this.role = role;
+    }
+
+    @Override
+    public String toString() {
+        return "UpdateTeacherStateDTO{" +
+                "id=" + id +
+                ", role=" + role +
+                '}';
+    }
+}

+ 13 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/UserService.java

@@ -41,6 +41,10 @@ public class UserService {
         this.gitlabService = gitlabService;
         this.gitlabService = gitlabService;
     }
     }
 
 
+    public List<User> findAllUsers(){
+        return userRepository.findAll();
+    }
+
     public List<User> findUserByRole(UserRole role) {
     public List<User> findUserByRole(UserRole role) {
         return userRepository.findByRole(role);
         return userRepository.findByRole(role);
     }
     }
@@ -81,6 +85,15 @@ public class UserService {
                 }).orElseThrow(CustomErrorException::userIdNotFound);
                 }).orElseThrow(CustomErrorException::userIdNotFound);
     }
     }
 
 
+    @Transactional(rollbackFor = RuntimeException.class)
+    public void updateUserRole(Long userId, UserRole role) {
+        userRepository.findById(userId)
+                .map(user -> {
+                    user.setRole(role);
+                    return userRepository.save(user);
+                }).orElseThrow(CustomErrorException::userIdNotFound);
+    }
+
     @Transactional(rollbackFor = RuntimeException.class)
     @Transactional(rollbackFor = RuntimeException.class)
     public User registerUser(UserVO userVO, String password, String phoneCode) {
     public User registerUser(UserVO userVO, String password, String phoneCode) {
         checkPhoneMessageOrThrowError(userVO.getPhone(), phoneCode);
         checkPhoneMessageOrThrowError(userVO.getPhone(), phoneCode);

+ 15 - 4
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/AdminController.java

@@ -4,6 +4,7 @@ import cn.seecoder.seecoderportalcommon.vo.SuperState;
 import cn.seecoder.seecoderportalcommon.vo.SuperVO;
 import cn.seecoder.seecoderportalcommon.vo.SuperVO;
 import cn.seecoder.seecoderportalcommon.vo.UserRole;
 import cn.seecoder.seecoderportalcommon.vo.UserRole;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
+import cn.seecoder.seecoderportalcommon.vo.dto.UpdateUserRoleDTO;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.service.SuperService;
 import cn.seecoder.seecoderportalserver.service.SuperService;
 import cn.seecoder.seecoderportalserver.service.UserService;
 import cn.seecoder.seecoderportalserver.service.UserService;
@@ -43,11 +44,12 @@ public class AdminController {
     }
     }
 
 
     /**
     /**
-     * 获取所有 ADMIN 权限的用户
+     * 获取所有 STUDENT 和 SEEC 权限的用户
      */
      */
     @GetMapping("/getUsers")
     @GetMapping("/getUsers")
     public OkResponse<List<UserVO>> getUsers() {
     public OkResponse<List<UserVO>> getUsers() {
-        return OkResponse.of(userService.findUserByRole(UserRole.ADMIN).stream()
+        return OkResponse.of(userService.findAllUsers().stream()
+                .filter(user -> user.getRole() == UserRole.STUDENT || user.getRole() == UserRole.SEEC)
                 .map(userMapper::userToUserVO)
                 .map(userMapper::userToUserVO)
                 .collect(Collectors.toList()));
                 .collect(Collectors.toList()));
     }
     }
@@ -55,12 +57,21 @@ public class AdminController {
     /**
     /**
      * 更新用户,改变其 valid 状态
      * 更新用户,改变其 valid 状态
      */
      */
-    @PostMapping("/updateUser")
-    public OkResponse<Boolean> updateUser(@RequestBody UpdateUserValidDTO updateUserValidDTO) {
+    @PostMapping("/updateUserValid")
+    public OkResponse<Boolean> updateUserValid(@RequestBody UpdateUserValidDTO updateUserValidDTO) {
         userService.updateUserValid(updateUserValidDTO.getId(), updateUserValidDTO.getValid());
         userService.updateUserValid(updateUserValidDTO.getId(), updateUserValidDTO.getValid());
         return OkResponse.of(true);
         return OkResponse.of(true);
     }
     }
 
 
+    /**
+     * 更新用户,改变其 role
+     */
+    @PostMapping("/updateUserRole")
+    public OkResponse<Boolean> updateUserRole(@RequestBody UpdateUserRoleDTO updateUserValidDTO) {
+        userService.updateUserRole(updateUserValidDTO.getId(), updateUserValidDTO.getRole());
+        return OkResponse.of(true);
+    }
+
     /**
     /**
      * 使该【超级用户】通过审核
      * 使该【超级用户】通过审核
      */
      */

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

@@ -1,93 +1,93 @@
-package cn.seecoder.seecoderportalserver.web.rest;
-
-import cn.seecoder.seecoderportalcommon.vo.MessageVO;
-import cn.seecoder.seecoderportalcommon.vo.dto.*;
-import cn.seecoder.seecoderportalcommon.vo.UserVO;
-import cn.seecoder.seecoderportalserver.mapper.UserMapper;
-import cn.seecoder.seecoderportalserver.security.DomainUserDetails;
-import cn.seecoder.seecoderportalserver.security.SecurityUtils;
-import cn.seecoder.seecoderportalserver.service.AliService;
-import cn.seecoder.seecoderportalserver.service.UserService;
-import cn.seecoder.seecoderportalserver.utility.OkResponse;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-
-
-/**
- * @author kunduin
- */
-@RestController
-@RequestMapping("/api/user")
-public class UserController {
-
-    private final UserService userService;
-
-    private final UserMapper userMapper;
-
-    private final AliService aliService;
-
-    public UserController(UserService userService, UserMapper userMapper, AliService aliService) {
-        this.userService = userService;
-        this.userMapper = userMapper;
-        this.aliService = aliService;
-    }
-
-    @PostMapping("/register")
-    public OkResponse<UserVO> register(@Valid @RequestBody RegisterDTO registerDTO) {
-        return OkResponse.of(userMapper.userToUserVO(
-                userService.registerUser(registerDTO, registerDTO.getPassword(), registerDTO.getIdentifyCode())
-        ));
-    }
-
-    @PostMapping("/sendMessage")
-    public OkResponse<MessageVO> sendMessage(@RequestBody PhoneDTO phoneDTO) {
-        aliService.sendMessage(phoneDTO.getPhone());
-        return OkResponse.of(new MessageVO("短信发送成功"));
-    }
-
-    @GetMapping("/getInfo")
-    public OkResponse<UserVO> getUserInfo(){
-        DomainUserDetails user = SecurityUtils.getCurrentUser();
-        return OkResponse.of(userMapper.domainToUserVO(user));
-    }
-
-    @PostMapping("/saveName")
-    public OkResponse<UserVO> saveName(@RequestBody ChangeNameDTO changeNameDTO) {
-        DomainUserDetails user = SecurityUtils.getCurrentUser();
-        return OkResponse.of(userMapper.userToUserVO(
-                userService.updateUserName(user.getId(), changeNameDTO.getNewName())
-        ));
-    }
-
-    @PostMapping("/saveEmail")
-    public OkResponse<UserVO> saveEmail(@RequestBody ChangeEmailDTO changeEmailDTO){
-        DomainUserDetails user = SecurityUtils.getCurrentUser();
-        return OkResponse.of(userMapper.userToUserVO(
-                userService.updateUserEmail(user.getId(), changeEmailDTO.getNewEmail())
-        ));
-    }
-
-    @PostMapping("/saveSignature")
-    public OkResponse<UserVO> saveSignature(@RequestBody ChangeSignatureDTO changeSignatureDTO){
-        DomainUserDetails user = SecurityUtils.getCurrentUser();
-        return OkResponse.of(userMapper.userToUserVO(
-                userService.updateUserSignature(user.getId(), changeSignatureDTO.getNewSignature())
-        ));
-    }
-
-    @PostMapping("/resetPassword")
-    public OkResponse<Boolean> resetPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) {
-        userService.resetPassword(
-                resetPasswordDTO.getPhone(),
-                resetPasswordDTO.getIdentifyCode(),
-                resetPasswordDTO.getPassword()
-        );
-        return OkResponse.of(true);
-    }
-
-    @GetMapping("/findIdByPhone/{phone}")
-    public OkResponse<Long> findIdByPhone(@PathVariable String phone) {
-        return OkResponse.of(userService.findIdByPhone(phone));
-    }
-}
+package cn.seecoder.seecoderportalserver.web.rest;
+
+import cn.seecoder.seecoderportalcommon.vo.MessageVO;
+import cn.seecoder.seecoderportalcommon.vo.dto.*;
+import cn.seecoder.seecoderportalcommon.vo.UserVO;
+import cn.seecoder.seecoderportalserver.mapper.UserMapper;
+import cn.seecoder.seecoderportalserver.security.DomainUserDetails;
+import cn.seecoder.seecoderportalserver.security.SecurityUtils;
+import cn.seecoder.seecoderportalserver.service.AliService;
+import cn.seecoder.seecoderportalserver.service.UserService;
+import cn.seecoder.seecoderportalserver.utility.OkResponse;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+
+/**
+ * @author kunduin
+ */
+@RestController
+@RequestMapping("/api/user")
+public class UserController {
+
+    private final UserService userService;
+
+    private final UserMapper userMapper;
+
+    private final AliService aliService;
+
+    public UserController(UserService userService, UserMapper userMapper, AliService aliService) {
+        this.userService = userService;
+        this.userMapper = userMapper;
+        this.aliService = aliService;
+    }
+
+    @PostMapping("/register")
+    public OkResponse<UserVO> register(@Valid @RequestBody RegisterDTO registerDTO) {
+        return OkResponse.of(userMapper.userToUserVO(
+                userService.registerUser(registerDTO, registerDTO.getPassword(), registerDTO.getIdentifyCode())
+        ));
+    }
+
+    @PostMapping("/sendMessage")
+    public OkResponse<MessageVO> sendMessage(@RequestBody PhoneDTO phoneDTO) {
+        aliService.sendMessage(phoneDTO.getPhone());
+        return OkResponse.of(new MessageVO("短信发送成功"));
+    }
+
+    @GetMapping("/getInfo")
+    public OkResponse<UserVO> getUserInfo(){
+        DomainUserDetails user = SecurityUtils.getCurrentUser();
+        return OkResponse.of(userMapper.domainToUserVO(user));
+    }
+
+    @PostMapping("/saveName")
+    public OkResponse<UserVO> saveName(@RequestBody ChangeNameDTO changeNameDTO) {
+        DomainUserDetails user = SecurityUtils.getCurrentUser();
+        return OkResponse.of(userMapper.userToUserVO(
+                userService.updateUserName(user.getId(), changeNameDTO.getNewName())
+        ));
+    }
+
+    @PostMapping("/saveEmail")
+    public OkResponse<UserVO> saveEmail(@RequestBody ChangeEmailDTO changeEmailDTO){
+        DomainUserDetails user = SecurityUtils.getCurrentUser();
+        return OkResponse.of(userMapper.userToUserVO(
+                userService.updateUserEmail(user.getId(), changeEmailDTO.getNewEmail())
+        ));
+    }
+
+    @PostMapping("/saveSignature")
+    public OkResponse<UserVO> saveSignature(@RequestBody ChangeSignatureDTO changeSignatureDTO){
+        DomainUserDetails user = SecurityUtils.getCurrentUser();
+        return OkResponse.of(userMapper.userToUserVO(
+                userService.updateUserSignature(user.getId(), changeSignatureDTO.getNewSignature())
+        ));
+    }
+
+    @PostMapping("/resetPassword")
+    public OkResponse<Boolean> resetPassword(@RequestBody ResetPasswordDTO resetPasswordDTO) {
+        userService.resetPassword(
+                resetPasswordDTO.getPhone(),
+                resetPasswordDTO.getIdentifyCode(),
+                resetPasswordDTO.getPassword()
+        );
+        return OkResponse.of(true);
+    }
+
+    @GetMapping("/findIdByPhone/{phone}")
+    public OkResponse<Long> findIdByPhone(@PathVariable String phone) {
+        return OkResponse.of(userService.findIdByPhone(phone));
+    }
+}