Browse Source

improvement: 增加用户、课程修改功能

ChenSiTong 6 năm trước cách đây
mục cha
commit
8d08140b94

+ 12 - 0
src/main/java/nju/seec/helper/controller/CourseController.java

@@ -7,6 +7,7 @@ import nju.seec.helper.controller.response.ResourceResponse;
 import nju.seec.helper.dto.ChooseDTO;
 import nju.seec.helper.dto.CourseDTO;
 import nju.seec.helper.dto.LoginUser;
+import nju.seec.helper.dto.modify.ModifyCourseDTO;
 import nju.seec.helper.service.CourseService;
 import nju.seec.helper.util.enums.UserType;
 import nju.seec.helper.vo.CourseVO;
@@ -42,6 +43,17 @@ public class CourseController {
         return ResourceResponse.of(courseVO);
     }
 
+    /**
+     * 教师修改课程
+     */
+    @Auth(roles = UserType.TEACHER, message = "修改课程")
+    @PutMapping
+    public ResourceResponse<CourseVO> modifyCourse(LoginUser user,
+                                                   @Valid @RequestBody ModifyCourseDTO modifyCourseDTO) {
+        CourseVO courseVO = courseService.modifyCourse(user, modifyCourseDTO);
+        return ResourceResponse.of(courseVO);
+    }
+
     /**
      * 学生选课
      */

+ 1 - 1
src/main/java/nju/seec/helper/controller/SlideController.java

@@ -4,7 +4,7 @@ import nju.seec.helper.aspect.auth.Auth;
 import nju.seec.helper.controller.response.PageResourceResponse;
 import nju.seec.helper.controller.response.ResourceResponse;
 import nju.seec.helper.dto.LoginUser;
-import nju.seec.helper.dto.ModifySlideDTO;
+import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.dto.SlideDTO;
 import nju.seec.helper.service.SlideService;
 import nju.seec.helper.util.enums.UserType;

+ 20 - 2
src/main/java/nju/seec/helper/controller/UserController.java

@@ -6,6 +6,7 @@ import nju.seec.helper.controller.response.ResourceResponse;
 import nju.seec.helper.dto.LoginDTO;
 import nju.seec.helper.dto.LoginUser;
 import nju.seec.helper.dto.RegisterDTO;
+import nju.seec.helper.dto.modify.ModifyUserDTO;
 import nju.seec.helper.service.UserService;
 import nju.seec.helper.util.Consts;
 import nju.seec.helper.util.enums.UserType;
@@ -67,9 +68,26 @@ public class UserController {
     }
 
     /**
-     * 获取自身用户信息
+     * 修改个人信息
      */
-    @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取自身用户信息")
+    @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "修改个人信息")
+    @PutMapping
+    public ResourceResponse<UserVO> modifyUser(LoginUser user,
+                                               @Valid @RequestBody ModifyUserDTO modifyUserDTO,
+                                               HttpSession session) {
+        UserVO userVO = userService.modifyUser(user, modifyUserDTO);
+        user = (LoginUser) session.getAttribute(Consts.SESSION_USER_NAME);
+        user.setId(userVO.getId());
+        user.setName(userVO.getName());
+        user.setType(userVO.getType());
+        session.setAttribute(Consts.SESSION_USER_NAME, user);
+        return ResourceResponse.of(userVO);
+    }
+
+    /**
+     * 获取个人信息
+     */
+    @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取个人信息")
     @GetMapping
     public ResourceResponse<UserVO> getUserInfo(LoginUser user) {
         UserVO userVO = userService.getUserById(user.getId());

+ 23 - 0
src/main/java/nju/seec/helper/dto/modify/ModifyCourseDTO.java

@@ -0,0 +1,23 @@
+package nju.seec.helper.dto.modify;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author cst
+ */
+@Data
+public class ModifyCourseDTO {
+    @NotNull
+    private Integer id;
+    @NotBlank
+    private String name;
+    @NotNull
+    private String bio;
+    @NotBlank
+    private String code;
+
+    private String cover;
+}

+ 1 - 1
src/main/java/nju/seec/helper/dto/ModifySlideDTO.java → src/main/java/nju/seec/helper/dto/modify/ModifySlideDTO.java

@@ -1,4 +1,4 @@
-package nju.seec.helper.dto;
+package nju.seec.helper.dto.modify;
 
 import lombok.Data;
 import nju.seec.helper.util.enums.SlideState;

+ 19 - 0
src/main/java/nju/seec/helper/dto/modify/ModifyUserDTO.java

@@ -0,0 +1,19 @@
+package nju.seec.helper.dto.modify;
+
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author cst
+ */
+@Data
+public class ModifyUserDTO {
+    @NotBlank
+    @Length(min = 2)
+    private String name;
+
+    @NotBlank
+    private String password;
+}

+ 10 - 0
src/main/java/nju/seec/helper/service/CourseService.java

@@ -3,6 +3,7 @@ package nju.seec.helper.service;
 import nju.seec.helper.dto.ChooseDTO;
 import nju.seec.helper.dto.CourseDTO;
 import nju.seec.helper.dto.LoginUser;
+import nju.seec.helper.dto.modify.ModifyCourseDTO;
 import nju.seec.helper.vo.CourseVO;
 import org.springframework.data.domain.Pageable;
 
@@ -21,6 +22,15 @@ public interface CourseService {
      */
     CourseVO createCourse(LoginUser teacher, CourseDTO courseDTO);
 
+    /**
+     * 修改课程
+     *
+     * @param teacher
+     * @param modifyCourseDTO
+     * @return
+     */
+    CourseVO modifyCourse(LoginUser teacher, ModifyCourseDTO modifyCourseDTO);
+
     /**
      * 学生选课
      *

+ 1 - 1
src/main/java/nju/seec/helper/service/SlideService.java

@@ -1,7 +1,7 @@
 package nju.seec.helper.service;
 
 import nju.seec.helper.dto.LoginUser;
-import nju.seec.helper.dto.ModifySlideDTO;
+import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.dto.SlideDTO;
 import nju.seec.helper.vo.SlideVO;
 import org.springframework.data.domain.Pageable;

+ 11 - 0
src/main/java/nju/seec/helper/service/UserService.java

@@ -1,6 +1,8 @@
 package nju.seec.helper.service;
 
+import nju.seec.helper.dto.LoginUser;
 import nju.seec.helper.dto.RegisterDTO;
+import nju.seec.helper.dto.modify.ModifyUserDTO;
 import nju.seec.helper.vo.UserVO;
 
 /**
@@ -31,4 +33,13 @@ public interface UserService {
      * @return
      */
     UserVO getUserById(Integer userId);
+
+    /**
+     * 修改用户信息
+     *
+     * @param loginUser
+     * @param modifyUserDTO
+     * @return
+     */
+    UserVO modifyUser(LoginUser loginUser, ModifyUserDTO modifyUserDTO);
 }

+ 18 - 3
src/main/java/nju/seec/helper/service/impl/CourseServiceImpl.java

@@ -5,6 +5,7 @@ import nju.seec.helper.dao.CourseDAO;
 import nju.seec.helper.dto.ChooseDTO;
 import nju.seec.helper.dto.CourseDTO;
 import nju.seec.helper.dto.LoginUser;
+import nju.seec.helper.dto.modify.ModifyCourseDTO;
 import nju.seec.helper.entity.Choose;
 import nju.seec.helper.entity.Course;
 import nju.seec.helper.service.CourseService;
@@ -33,14 +34,14 @@ public class CourseServiceImpl implements CourseService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public CourseVO createCourse(LoginUser user, CourseDTO courseDTO) {
-        Integer teacherId = user.getId();
+    public CourseVO createCourse(LoginUser teacher, CourseDTO courseDTO) {
+        Integer teacherId = teacher.getId();
         if (courseDAO.existsByNameAndTeacherId(courseDTO.getName(), teacherId)) {
             throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "该课程名已使用");
         }
         Course course = new Course();
         course.setTeacherId(teacherId)
-                .setTeacherName(user.getName())
+                .setTeacherName(teacher.getName())
                 .setName(courseDTO.getName())
                 .setBio(courseDTO.getBio())
                 .setCode(EncryptUtils.encode(courseDTO.getCode()));
@@ -48,6 +49,20 @@ public class CourseServiceImpl implements CourseService {
         return new CourseVO(course);
     }
 
+    @Override
+    public CourseVO modifyCourse(LoginUser teacher, ModifyCourseDTO modifyCourseDTO) {
+        Course course = courseDAO.findCourseById(modifyCourseDTO.getId());
+        if (!course.getTeacherId().equals(teacher.getId())) {
+            throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "您无权修改该课程");
+        }
+        course.setName(modifyCourseDTO.getName())
+                .setCode(modifyCourseDTO.getCode())
+                .setBio(modifyCourseDTO.getBio())
+                .setCover(modifyCourseDTO.getCover());
+        course = courseDAO.save(course);
+        return new CourseVO(course);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void chooseCourse(LoginUser student, ChooseDTO chooseDTO) {

+ 1 - 1
src/main/java/nju/seec/helper/service/impl/SlideServiceImpl.java

@@ -6,7 +6,7 @@ import nju.seec.helper.dao.ChooseDAO;
 import nju.seec.helper.dao.CourseDAO;
 import nju.seec.helper.dao.SlideDAO;
 import nju.seec.helper.dto.LoginUser;
-import nju.seec.helper.dto.ModifySlideDTO;
+import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.dto.SlideDTO;
 import nju.seec.helper.entity.Course;
 import nju.seec.helper.entity.Slide;

+ 11 - 0
src/main/java/nju/seec/helper/service/impl/UserServiceImpl.java

@@ -2,7 +2,9 @@ package nju.seec.helper.service.impl;
 
 import com.google.common.collect.ImmutableMap;
 import nju.seec.helper.dao.UserDAO;
+import nju.seec.helper.dto.LoginUser;
 import nju.seec.helper.dto.RegisterDTO;
+import nju.seec.helper.dto.modify.ModifyUserDTO;
 import nju.seec.helper.entity.User;
 import nju.seec.helper.service.UserService;
 import nju.seec.helper.util.CacheUtils;
@@ -78,4 +80,13 @@ public class UserServiceImpl implements UserService {
     public UserVO getUserById(Integer userId) {
         return new UserVO(userDAO.findUserById(userId));
     }
+
+    @Override
+    public UserVO modifyUser(LoginUser loginUser, ModifyUserDTO modifyUserDTO) {
+        User user = userDAO.findUserById(loginUser.getId());
+        user.setName(modifyUserDTO.getName())
+                .setPassword(EncryptUtils.encode(modifyUserDTO.getPassword()));
+        user = userDAO.save(user);
+        return new UserVO(user);
+    }
 }