瀏覽代碼

完善课程相关业务逻辑

Yumin 6 年之前
父節點
當前提交
5c69fe0b05

+ 36 - 0
src/main/java/cn/minbb/edu/controller/rest/CourseController.java

@@ -2,13 +2,17 @@ package cn.minbb.edu.controller.rest;
 
 import cn.minbb.edu.data.ResponseResult;
 import cn.minbb.edu.model.Course;
+import cn.minbb.edu.model.User;
 import cn.minbb.edu.service.CourseService;
 import cn.minbb.edu.service.SubjectService;
 import cn.minbb.edu.service.UserService;
+import cn.minbb.edu.util.CollectionUtil;
+import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("app/course")
@@ -47,4 +51,36 @@ public class CourseController {
     public ResponseResult<Course> courseAll() {
         return ResponseResult.ok(true).code(1).dataset(courseService.findAll());
     }
+
+    @PostMapping("user/all")
+    public ResponseResult<Course> userAll(@RequestBody String userData) {
+        User userClient = JSONObject.parseObject(userData, User.class);
+        User user = userService.findUserById(userClient.getId());
+        List<Course> courseList = courseService.findAllByIdIn(CollectionUtil.stringToIntList(user.getCourseIds()));
+        return ResponseResult.ok(true).code(1).message("查询到 " + courseList.size() + "门课程").dataset(courseList);
+    }
+
+    @PostMapping("user/add")
+    public ResponseResult<Course> userAdd(@RequestBody Map<String, Object> dataMap) {
+        User userClient = JSONObject.parseObject(JSONObject.toJSONString(dataMap.get("user")), User.class);
+        User user = userService.findUserById(userClient.getId());
+        Course course = JSONObject.parseObject(JSONObject.toJSONString(dataMap.get("course")), Course.class);
+        List<Integer> courseIdList = CollectionUtil.stringToIntList(user.getCourseIds());
+        if (!courseIdList.contains(course.getId())) courseIdList.add(course.getId());
+        user.setCourseIds(CollectionUtil.intListToString(courseIdList));
+        userService.save(user);
+        return ResponseResult.ok(true).code(1).message("加入我的课程成功").dataNone();
+    }
+
+    @PostMapping("user/remove")
+    public ResponseResult<Course> userRemove(@RequestBody Map<String, Object> dataMap) {
+        User userClient = JSONObject.parseObject(JSONObject.toJSONString(dataMap.get("user")), User.class);
+        User user = userService.findUserById(userClient.getId());
+        Course course = JSONObject.parseObject(JSONObject.toJSONString(dataMap.get("course")), Course.class);
+        List<Integer> courseIdList = CollectionUtil.stringToIntList(user.getCourseIds());
+        if (courseIdList.contains(course.getId())) courseIdList.remove(course.getId());
+        user.setCourseIds(CollectionUtil.intListToString(courseIdList));
+        userService.save(user);
+        return ResponseResult.ok(true).code(1).message("移除成功").dataNone();
+    }
 }

+ 11 - 3
src/main/java/cn/minbb/edu/controller/rest/SubjectController.java

@@ -2,9 +2,11 @@ package cn.minbb.edu.controller.rest;
 
 import cn.minbb.edu.data.ResponseResult;
 import cn.minbb.edu.model.Subject;
+import cn.minbb.edu.model.User;
 import cn.minbb.edu.service.CourseService;
 import cn.minbb.edu.service.SubjectService;
 import cn.minbb.edu.service.UserService;
+import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -44,9 +46,15 @@ public class SubjectController {
     @PostMapping("all")
     public ResponseResult<Subject> subjectAll() {
         List<Subject> subjectList = subjectService.findAll();
-        for (Subject subject : subjectList) {
-            // subject.setVoCourseList(courseService.findAllBySubjectId(subject.getId()));
-        }
+        return ResponseResult.ok(true).code(1).message("").dataset(subjectList);
+    }
+
+    @PostMapping("user")
+    public ResponseResult<Subject> subjectForUser(@RequestBody String userData) {
+        User userClient = JSONObject.parseObject(userData, User.class);
+        User user = userService.findUserById(userClient.getId());
+        List<Subject> subjectList = user.getSubjectList();
+        if (null == subjectList || subjectList.isEmpty()) subjectList = subjectService.findAll();
         return ResponseResult.ok(true).code(1).message("").dataset(subjectList);
     }
 }

+ 5 - 2
src/main/java/cn/minbb/edu/controller/rest/UserController.java

@@ -35,7 +35,10 @@ public class UserController {
 
     @PostMapping("auto/login")
     public ResponseResult<User> userAutoLogin(@RequestBody User userClient) {
-        return ResponseResult.ok(true).code(1).message("登录成功").data(userService.findUserByUsername(userClient.getUsername()));
+        User user = userService.findUserByUsername(userClient.getUsername());
+        Integer stageId = user.getStageId();
+        if (null != stageId) user.setVoStage(stageService.findOneById(stageId));
+        return ResponseResult.ok(true).code(1).message("登录成功").data(user);
     }
 
     @PostMapping("info")
@@ -89,7 +92,7 @@ public class UserController {
             return ResponseResult.ok(false).code(-1).message("用户不存在").dataNone();
         } else {
             userServer.setSubjectList(subjectList);
-            return ResponseResult.ok(true).code(1).message("OK").data(userService.update(userServer));
+            return ResponseResult.ok(true).code(1).message("OK").data(userService.save(userServer));
         }
     }
 }

+ 10 - 0
src/main/java/cn/minbb/edu/model/User.java

@@ -87,6 +87,11 @@ public class User implements UserDetails {
     @Column(name = "stage_id", columnDefinition = "INT COMMENT '关联学习阶段'")
     private Integer stageId;
 
+    @Getter
+    @Setter
+    @Column(name = "course_ids", columnDefinition = "VARCHAR(255) COMMENT '关联课程集合'")
+    private String courseIds;
+
     @Getter
     @Setter
     @ManyToMany(cascade = {CascadeType.REFRESH}, fetch = FetchType.EAGER)
@@ -146,6 +151,11 @@ public class User implements UserDetails {
     @Transient
     private Stage voStage;
 
+    @Getter
+    @Setter
+    @Transient
+    private Course voCourse;
+
     public User(@NotNull String name, @NotNull String username, @NotNull String password) {
         this.name = name;
         this.username = username;

+ 3 - 0
src/main/java/cn/minbb/edu/model/repository/CourseRepository.java

@@ -3,5 +3,8 @@ package cn.minbb.edu.model.repository;
 import cn.minbb.edu.model.Course;
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+
 public interface CourseRepository extends JpaRepository<Course, Integer> {
+    List<Course> findAllByIdIn(List<Integer> ids);
 }

+ 2 - 0
src/main/java/cn/minbb/edu/service/CourseService.java

@@ -14,4 +14,6 @@ public interface CourseService {
     List<Course> findAllByUserId(Integer userId);
 
     List<Course> findAllBySubjectId(Integer subjectId);
+
+    List<Course> findAllByIdIn(List<Integer> ids);
 }

+ 0 - 2
src/main/java/cn/minbb/edu/service/UserService.java

@@ -6,8 +6,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
 public interface UserService extends UserDetailsService {
     User save(User user);
 
-    User update(User user);
-
     User findUserById(Integer id);
 
     User findUserByUsername(String username);

+ 5 - 0
src/main/java/cn/minbb/edu/service/impl/CourseServiceImpl.java

@@ -52,4 +52,9 @@ public class CourseServiceImpl implements CourseService {
         course.setSubjectId(subjectId);
         return courseRepository.findAll(Example.of(course), SortTools.createdAtDown());
     }
+
+    @Override
+    public List<Course> findAllByIdIn(List<Integer> ids) {
+        return courseRepository.findAllByIdIn(ids);
+    }
 }

+ 0 - 5
src/main/java/cn/minbb/edu/service/impl/UserServiceImpl.java

@@ -39,11 +39,6 @@ public class UserServiceImpl implements UserService {
         return userRepository.save(user);
     }
 
-    @Override
-    public User update(User user) {
-        return userRepository.save(user);
-    }
-
     @Override
     public User findUserById(Integer id) {
         User user = new User();

+ 46 - 0
src/main/java/cn/minbb/edu/util/CollectionUtil.java

@@ -0,0 +1,46 @@
+package cn.minbb.edu.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class CollectionUtil {
+
+    public static List<Integer> stringToIntList(String listString) {
+        if (null == listString || listString.isEmpty()) {
+            return new ArrayList<>();
+        } else {
+            List<Integer> list = new ArrayList<>();
+            String temp = listString.substring(1, listString.length() - 1);
+            if (temp.isEmpty()) return new ArrayList<>();
+            String[] split = temp.split(",");
+            for (String s : split) {
+                list.add(Integer.parseInt(s.trim()));
+            }
+            return list;
+        }
+    }
+
+    public static Integer[] stringToIntArray(String arrayString) {
+        if (null == arrayString || arrayString.isEmpty()) {
+            return new Integer[]{};
+        } else {
+            String temp = arrayString.substring(1, arrayString.length() - 1);
+            if (temp.isEmpty()) return new Integer[]{};
+            String[] split = temp.split(",");
+            Integer[] array = new Integer[split.length];
+            for (int i = 0; i < split.length; i++) {
+                array[i] = Integer.parseInt(split[i].trim());
+            }
+            return array;
+        }
+    }
+
+    public static String intListToString(List<Integer> intList) {
+        return Arrays.toString(intList.toArray());
+    }
+
+    public static String intArrayToString(int[] intArray) {
+        return Arrays.toString(intArray);
+    }
+}