From a98e0ae083b381b3cd24abbd947bb7daf71f856f Mon Sep 17 00:00:00 2001
From: tianea <tianxyy80@gmail.com>
Date: Tue, 22 Feb 2022 03:05:38 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E8=A7=82=E9=A2=98=20=E5=88=97?=
 =?UTF-8?q?=E8=A1=A8=20=E6=96=B0=E5=A2=9E=20=E7=BC=96=E8=BE=91=20=E4=B8=8A?=
 =?UTF-8?q?=E4=B8=8B=E6=9E=B6=20=E6=8C=87=E9=87=8F=E4=B8=8A=E4=B8=8B?=
 =?UTF-8?q?=E6=9E=B6=20=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tz/exam/exam-service/pom.xml                  |  4 +
 .../java/com/tz/platform/entity/Course.java   | 17 +---
 .../java/com/tz/platform/entity/Question.java |  4 +
 .../FeignQuestionController.java}             | 10 +-
 ...QuestionBiz.java => FeignQuestionBiz.java} |  7 +-
 .../tz/platform/exam/pc/dto/QuestionDTO.java  |  2 +-
 .../tz/platform/pc/PCCourseController.java    | 48 ++++++++++
 .../tz/platform/pc/PCQuestionController.java  | 52 ++++++++++
 .../com/tz/platform/pc/biz/PCCourseBiz.java   | 94 +++++++++++++++++++
 .../com/tz/platform/pc/dto/CourseDTO.java     | 20 ++++
 .../com/tz/platform/pc/dto/PageCourseDTO.java | 12 +++
 .../tz/platform/pc/dto/PageQuestionDTO.java   | 14 +++
 .../com/tz/platform/pc/dto/QuestionDTO.java   | 27 ++++++
 .../tz/platform/pc/vo/BatchQuestionVO.java    | 11 +++
 .../java/com/tz/platform/pc/vo/CourseVO.java  | 19 ++++
 .../com/tz/platform/pc/vo/PageCourseVO.java   | 10 ++
 .../com/tz/platform/pc/vo/PageQuestionVO.java | 10 ++
 .../com/tz/platform/pc/vo/QuestionVO.java     | 27 ++++++
 .../com/tz/platform/repository/CourseDao.java |  5 +
 .../src/main/resources/bootstrap.yml          | 13 +++
 .../exam-service/target/classes/bootstrap.yml | 13 +++
 tz/pom.xml                                    |  1 +
 .../tz/platform/feign/IFeignStudentLevel.java |  2 +
 .../feign/FeignStudentLevelController.java    |  7 +-
 .../system/pc/PCStudentLevelController.java   | 39 ++++++++
 .../system/pc/biz/PCStudentLevelBiz.java      | 51 ++++++++++
 .../system/pc/dto/ListStudentLevelDTO.java    | 12 +++
 .../system/pc/dto/StudentLevelDTO.java        | 11 +++
 .../platform/system/pc/vo/StudentLevelVO.java |  9 ++
 .../StudentLevelRepositoryTest.java           | 17 ++++
 .../tz/platform/image/pc/dto/ImageDTO.java    |  2 +
 .../com/tz/platform/feign/user/vo/UserVo.java |  2 +
 .../tz/platform/UserServiceApplication.java   |  2 +-
 .../platform/user/feign/biz/FeignUserBiz.java |  7 +-
 34 files changed, 556 insertions(+), 25 deletions(-)
 rename tz/exam/exam-service/src/main/java/com/tz/platform/exam/{pc/PCQuestionController.java => feign/FeignQuestionController.java} (74%)
 rename tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/{PCQuestionBiz.java => FeignQuestionBiz.java} (87%)
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCCourseController.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCCourseBiz.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/CourseDTO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageCourseDTO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageQuestionDTO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/QuestionDTO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/BatchQuestionVO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/CourseVO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageCourseVO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageQuestionVO.java
 create mode 100644 tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java
 create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/PCStudentLevelController.java
 create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCStudentLevelBiz.java
 create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/ListStudentLevelDTO.java
 create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/StudentLevelDTO.java
 create mode 100644 tz/system/system-service/src/main/java/com/tz/platform/system/pc/vo/StudentLevelVO.java
 create mode 100644 tz/system/system-service/src/test/java/com/tz/platform/repository/StudentLevelRepositoryTest.java

diff --git a/tz/exam/exam-service/pom.xml b/tz/exam/exam-service/pom.xml
index 8192a1a..3890a37 100644
--- a/tz/exam/exam-service/pom.xml
+++ b/tz/exam/exam-service/pom.xml
@@ -24,6 +24,10 @@
             <groupId>com.tz</groupId>
             <artifactId>exam-feign</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.tz</groupId>
+            <artifactId>user-feign</artifactId>
+        </dependency>
         <!-- test -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Course.java b/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Course.java
index 340d071..b89df69 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Course.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Course.java
@@ -1,35 +1,26 @@
 package com.tz.platform.entity;
 
-import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Data;
-import org.hibernate.annotations.Type;
-import org.hibernate.annotations.TypeDef;
 
 import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 @Entity
 @Data
 @Table(indexes = {@Index(columnList = "name")})
-@TypeDef(name = "json", typeClass = JsonStringType.class)
 public class Course  implements Serializable {
     @Id
     @GeneratedValue(strategy= GenerationType.IDENTITY)
     private Long id;
     private String name;
-    private String type;
     private String creator;
+    private Long createId;
     private Date createTime;
     private Integer learningCount;
     private String thumbnail;
     @Column(columnDefinition = "text")
-    private String summary;
-    @Type(type = "json")
-    @Column(columnDefinition = "json" )
-    private List<CourseTag> courseTag;
-    @Type(type = "json")
-    @Column(columnDefinition = "json" )
-    private CourseCat couseCat;
+    private String content;
+    private Integer tagId;
+    private Integer catId;
 }
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Question.java b/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Question.java
index cbf823b..7e89f65 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Question.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/entity/Question.java
@@ -8,6 +8,7 @@ import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
 
 import javax.persistence.*;
+import java.util.Date;
 import java.util.List;
 
 @Entity
@@ -30,6 +31,9 @@ public class Question {
     private String stem;
     private String stemImg;
     private Long creatorId;
+    private String creator;
+    private Date createTime;
+    private Integer status;
     @Type(type = "json")
     @Column(columnDefinition = "json" )
     List<Answer> answerList;
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/PCQuestionController.java b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/feign/FeignQuestionController.java
similarity index 74%
rename from tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/PCQuestionController.java
rename to tz/exam/exam-service/src/main/java/com/tz/platform/exam/feign/FeignQuestionController.java
index 01b937e..f31429e 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/PCQuestionController.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/feign/FeignQuestionController.java
@@ -1,18 +1,18 @@
-package com.tz.platform.exam.pc;
+package com.tz.platform.exam.feign;
 
 import com.tz.platform.common.core.base.BaseController;
 import com.tz.platform.common.core.base.Result;
-import com.tz.platform.exam.pc.biz.PCQuestionBiz;
+import com.tz.platform.exam.pc.biz.FeignQuestionBiz;
 import com.tz.platform.exam.pc.dto.QuestionDTO;
 import com.tz.platform.feign.exam.vo.QuestionVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
-@RequestMapping(value = "/pc/question")
-public class PCQuestionController extends BaseController {
+@RequestMapping(value = "/feign/question")
+public class FeignQuestionController extends BaseController {
     @Autowired
-    private PCQuestionBiz pcQuestionBiz;
+    private FeignQuestionBiz pcQuestionBiz;
 
     @GetMapping(value = "list/{pageNo}")
     public Result<QuestionDTO> listQuestion(@PathVariable("pageNo") Integer pageNO){
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/PCQuestionBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/FeignQuestionBiz.java
similarity index 87%
rename from tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/PCQuestionBiz.java
rename to tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/FeignQuestionBiz.java
index c5752d4..ec02fad 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/PCQuestionBiz.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/biz/FeignQuestionBiz.java
@@ -4,6 +4,7 @@ import com.tz.platform.common.core.base.Result;
 import com.tz.platform.entity.Question;
 import com.tz.platform.exam.pc.dto.QuestionDTO;
 import com.tz.platform.feign.exam.vo.QuestionVo;
+import com.tz.platform.pc.vo.PageQuestionVO;
 import com.tz.platform.repository.QuestionDao;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -16,16 +17,16 @@ import java.util.List;
 
 
 @Component
-public class PCQuestionBiz {
+public class FeignQuestionBiz {
 
     @Autowired
     private QuestionDao questionDao;
 
-    public Result<QuestionDTO> list(Integer pageNo){
+    public Result<QuestionDTO> list(int pageNo){
         QuestionDTO questionDTO = new QuestionDTO();
         Pageable pageable = PageRequest.of(pageNo,20);
         Page<Question> questions =  questionDao.findAll(pageable);
-        return  Result.success(questionDTO.setQuestions(questions));
+        return  Result.success(questionDTO.setPage(questions));
     }
 
     public Result<String> add(QuestionVo questionVo){
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionDTO.java
index 5bef351..792bfc9 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionDTO.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/exam/pc/dto/QuestionDTO.java
@@ -10,5 +10,5 @@ import java.io.Serializable;
 @Data
 @Accessors(chain = true)
 public class QuestionDTO implements Serializable {
-    Page<Question> questions;
+    Page<Question> page;
 }
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCCourseController.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCCourseController.java
new file mode 100644
index 0000000..43a9abb
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCCourseController.java
@@ -0,0 +1,48 @@
+package com.tz.platform.pc;
+
+import com.tz.platform.common.core.base.BaseController;
+import com.tz.platform.common.core.base.Result;
+import com.tz.platform.pc.biz.PCCourseBiz;
+import com.tz.platform.pc.dto.CourseDTO;
+import com.tz.platform.pc.dto.PageCourseDTO;
+import com.tz.platform.pc.vo.CourseVO;
+import com.tz.platform.pc.vo.PageCourseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(value = "/pc/course")
+public class PCCourseController extends BaseController {
+    @Autowired
+    private PCCourseBiz pcCourseBiz;
+
+    @PostMapping(value = "add")
+    public Result<String> add(@RequestBody  CourseVO courseVO){
+        return  pcCourseBiz.add(courseVO);
+    }
+
+    @PostMapping(value = "update")
+    public Result<String> update(@RequestBody CourseVO courseVO){
+        return  pcCourseBiz.update(courseVO);
+    }
+
+
+    @PostMapping(value = "list")
+    public Result<PageCourseDTO> list(@RequestBody PageCourseVO pageCourseVO){
+        return  pcCourseBiz.list(pageCourseVO);
+    }
+
+    @PostMapping(value = "delete")
+    public Result<String> del(@RequestBody CourseVO courseVO){
+        return  pcCourseBiz.del(courseVO);
+    }
+
+    @PostMapping(value = "get")
+    public Result<CourseDTO> get(@RequestBody CourseVO courseVO){
+        return pcCourseBiz.get(courseVO.getId());
+    }
+
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java
new file mode 100644
index 0000000..7d59f04
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/PCQuestionController.java
@@ -0,0 +1,52 @@
+package com.tz.platform.pc;
+
+import com.tz.platform.common.core.base.Result;
+import com.tz.platform.pc.biz.PCQuestionBiz;
+import com.tz.platform.pc.dto.PageQuestionDTO;
+import com.tz.platform.pc.dto.QuestionDTO;
+import com.tz.platform.pc.vo.BatchQuestionVO;
+import com.tz.platform.pc.vo.PageQuestionVO;
+import com.tz.platform.pc.vo.QuestionVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(value = "/pc/question")
+public class PCQuestionController {
+
+    @Autowired
+    private PCQuestionBiz questionBiz;
+
+    @PostMapping(value = "list")
+    public Result<PageQuestionDTO> list(@RequestBody PageQuestionVO questionVO){
+        return questionBiz.list(questionVO);
+    }
+
+    @PostMapping(value = "add")
+    public Result<Long> add(@RequestBody QuestionVO questionVo){
+        return questionBiz.add(questionVo);
+    }
+
+    @PostMapping(value = "update")
+    public Result<String> update(@RequestBody QuestionVO questionVo){
+        return questionBiz.update(questionVo);
+    }
+
+    @PostMapping(value = "delete")
+    public Result<String> delete(@RequestBody QuestionVO questionVO){
+        return questionBiz.delete(questionVO);
+    }
+
+    @PostMapping(value = "get")
+    public Result<QuestionDTO> get(@RequestBody QuestionVO questionVO){
+        return  questionBiz.get(questionVO);
+    }
+
+    @PostMapping(value = "batchupdate")
+    public Result<String> batchUpate(@RequestBody BatchQuestionVO vo){
+        return questionBiz.batch(vo);
+    }
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCCourseBiz.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCCourseBiz.java
new file mode 100644
index 0000000..28cffc2
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/biz/PCCourseBiz.java
@@ -0,0 +1,94 @@
+package com.tz.platform.pc.biz;
+
+import com.tz.platform.common.core.base.Result;
+import com.tz.platform.entity.Course;
+import com.tz.platform.feign.user.IFeignUser;
+import com.tz.platform.feign.user.vo.UserVo;
+import com.tz.platform.pc.dto.CourseDTO;
+import com.tz.platform.pc.dto.PageCourseDTO;
+import com.tz.platform.pc.vo.CourseVO;
+import com.tz.platform.pc.vo.PageCourseVO;
+import com.tz.platform.repository.CourseDao;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+
+@Component
+public class PCCourseBiz {
+    @Autowired
+    private CourseDao courseDao;
+
+    @Autowired
+    private IFeignUser feignUser;
+
+    public Result<String> add(CourseVO courseVO){
+        Result<String> v =   valid(courseVO);
+        if(v.getCode()!=200){
+            return v;
+        }
+        UserVo userVo = feignUser.getByUserNo(courseVO.getUserNo());
+        Course course = new Course();
+        BeanUtils.copyProperties(courseVO,course);
+        course.setCreateId(userVo.getId());
+        course.setCreator(userVo.getName());
+        course.setCreateTime(new Date());
+        courseDao.save(course);
+        return Result.success("成功");
+    }
+
+    private Result<String> valid(CourseVO courseVO){
+        if(StringUtils.isEmpty(courseVO.getName())){
+            return Result.error("课程名不能为空");
+        }
+        if(StringUtils.isEmpty(courseVO.getContent())){
+            return Result.error("简介不能为空");
+        }
+        if(courseVO.getUserNo()<=0){
+            return Result.error("没有权限");
+        }
+        return Result.success("success");
+    }
+
+    public Result<String> update(CourseVO courseVO){
+        Result<String> v = valid(courseVO);
+        if(v.getCode()!=200){
+            return v;
+        }
+        Course course = new Course();
+        BeanUtils.copyProperties(courseVO,course);
+        courseDao.save(course);
+        return Result.success("success");
+    }
+
+    public Result<PageCourseDTO> list(PageCourseVO pageCourseVO){
+        if(pageCourseVO.getPageNo()<0){
+            pageCourseVO.setPageNo(0);
+        }
+        if(pageCourseVO.getPageSize() == null ||pageCourseVO.getPageSize() <=0){
+            pageCourseVO.setPageSize(20);
+        }
+        Pageable pageable  = PageRequest.of(pageCourseVO.getPageNo(),pageCourseVO.getPageSize());
+        Page<Course> page = courseDao.findAll(pageable);
+        PageCourseDTO pageCourseDTO = new PageCourseDTO();
+        pageCourseDTO.setPage(page);
+        return Result.success(pageCourseDTO);
+    }
+
+    public Result<String> del(CourseVO courseVO){
+        courseDao.deleteById(courseVO.getId());
+        return Result.success("success");
+    }
+
+    public Result<CourseDTO> get(Long id){
+        Course course =  courseDao.getById(id);
+        CourseDTO courseDTO = new CourseDTO();
+        BeanUtils.copyProperties(course,courseDTO);
+        return Result.success(courseDTO);
+    }
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/CourseDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/CourseDTO.java
new file mode 100644
index 0000000..df965c9
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/CourseDTO.java
@@ -0,0 +1,20 @@
+package com.tz.platform.pc.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CourseDTO implements Serializable {
+    private Long id;
+    private String name;
+    private String creator;
+    private Long createId;
+    private Date createTime;
+    private Integer learningCount;
+    private String thumbnail;
+    private String content;
+    private Integer tagId;
+    private Integer catId;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageCourseDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageCourseDTO.java
new file mode 100644
index 0000000..b22510d
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageCourseDTO.java
@@ -0,0 +1,12 @@
+package com.tz.platform.pc.dto;
+
+import com.tz.platform.entity.Course;
+import lombok.Data;
+import org.springframework.data.domain.Page;
+
+import java.io.Serializable;
+
+@Data
+public class PageCourseDTO implements Serializable {
+    Page<Course> page;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageQuestionDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageQuestionDTO.java
new file mode 100644
index 0000000..83af2f5
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/PageQuestionDTO.java
@@ -0,0 +1,14 @@
+package com.tz.platform.pc.dto;
+
+import com.tz.platform.entity.Question;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.data.domain.Page;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+public class PageQuestionDTO implements Serializable {
+   private Page<Question> page;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/QuestionDTO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/QuestionDTO.java
new file mode 100644
index 0000000..add28b9
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/dto/QuestionDTO.java
@@ -0,0 +1,27 @@
+package com.tz.platform.pc.dto;
+
+import com.tz.platform.common.core.vo.Answer;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class QuestionDTO implements Serializable {
+    private Long userNO;
+    private Long id;
+    private Long courseId;
+    private String courseName;
+    private Long levelId;
+    private String levelName;
+    private Long questionType;
+    private String title;
+    private Long score;
+    private Integer type;
+    private String stem;
+    private String stemImg;
+    private Long creatorId;
+    List<Answer> answerList;
+    private String analysis;
+    private List<Integer> answerId;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/BatchQuestionVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/BatchQuestionVO.java
new file mode 100644
index 0000000..53cf2ff
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/BatchQuestionVO.java
@@ -0,0 +1,11 @@
+package com.tz.platform.pc.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BatchQuestionVO {
+    private List<Long> ids;
+    private Integer status;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/CourseVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/CourseVO.java
new file mode 100644
index 0000000..ab20435
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/CourseVO.java
@@ -0,0 +1,19 @@
+package com.tz.platform.pc.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class CourseVO {
+    private Long id;
+    private Long userNo;
+    private String name;
+    private String creator;
+    private Long createId;
+    private Date createTime;
+    private Integer learningCount;
+    private String thumbnail;
+    private String content;
+    private Integer tagId;
+    private Integer catId;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageCourseVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageCourseVO.java
new file mode 100644
index 0000000..dce660c
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageCourseVO.java
@@ -0,0 +1,10 @@
+package com.tz.platform.pc.vo;
+
+import lombok.Data;
+
+@Data
+public class PageCourseVO {
+   private Long userNo;
+   private Integer pageNo;
+   private Integer pageSize;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageQuestionVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageQuestionVO.java
new file mode 100644
index 0000000..11c116c
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/PageQuestionVO.java
@@ -0,0 +1,10 @@
+package com.tz.platform.pc.vo;
+
+import lombok.Data;
+
+@Data
+public class PageQuestionVO {
+    private Integer pageNo;
+    private Long courseId;
+    private String stem;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java
new file mode 100644
index 0000000..989427a
--- /dev/null
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/pc/vo/QuestionVO.java
@@ -0,0 +1,27 @@
+package com.tz.platform.pc.vo;
+
+import com.tz.platform.common.core.vo.Answer;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QuestionVO {
+    private Long userNO;
+    private Long id;
+    private Long courseId;
+    private String courseName;
+    private Long levelId;
+    private String levelName;
+    private Long questionType;
+    private String title;
+    private Long score;
+    private Integer type;
+    private String stem;
+    private String stemImg;
+    private Long creatorId;
+    List<Answer> answerList;
+    private String analysis;
+    private Integer status;
+    private List<Integer> answerId;
+}
diff --git a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/CourseDao.java b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/CourseDao.java
index 7308461..d5ab7eb 100644
--- a/tz/exam/exam-service/src/main/java/com/tz/platform/repository/CourseDao.java
+++ b/tz/exam/exam-service/src/main/java/com/tz/platform/repository/CourseDao.java
@@ -1,9 +1,14 @@
 package com.tz.platform.repository;
 
 import com.tz.platform.entity.Course;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
+
 @Repository
 public interface CourseDao extends JpaRepository<Course,Long> {
+    Page<Course> findAll(Pageable pageable);
+    Course getById(Long id);
 }
diff --git a/tz/exam/exam-service/src/main/resources/bootstrap.yml b/tz/exam/exam-service/src/main/resources/bootstrap.yml
index dc4e8ef..85bccbb 100644
--- a/tz/exam/exam-service/src/main/resources/bootstrap.yml
+++ b/tz/exam/exam-service/src/main/resources/bootstrap.yml
@@ -15,3 +15,16 @@ spring:
         file-extension: yaml
       discovery:
         namespace: ${spring.profiles.active}
+  servlet:
+    multipart:
+      max-file-size: 2MB
+      max-request-size: 2MB
+  data:
+    redis:
+      repositories:
+        enabled: false
+  devtools:
+    restart:
+      enabled: true
+    livereload:
+      port: 35730
\ No newline at end of file
diff --git a/tz/exam/exam-service/target/classes/bootstrap.yml b/tz/exam/exam-service/target/classes/bootstrap.yml
index dc4e8ef..85bccbb 100644
--- a/tz/exam/exam-service/target/classes/bootstrap.yml
+++ b/tz/exam/exam-service/target/classes/bootstrap.yml
@@ -15,3 +15,16 @@ spring:
         file-extension: yaml
       discovery:
         namespace: ${spring.profiles.active}
+  servlet:
+    multipart:
+      max-file-size: 2MB
+      max-request-size: 2MB
+  data:
+    redis:
+      repositories:
+        enabled: false
+  devtools:
+    restart:
+      enabled: true
+    livereload:
+      port: 35730
\ No newline at end of file
diff --git a/tz/pom.xml b/tz/pom.xml
index 995ee80..eb8ad81 100644
--- a/tz/pom.xml
+++ b/tz/pom.xml
@@ -91,6 +91,7 @@
                     <artifactId>spring-boot-maven-plugin</artifactId>
                     <configuration>
                         <executable>true</executable>
+                        <fork>true</fork>
                     </configuration>
                     <executions>
                         <execution>
diff --git a/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignStudentLevel.java b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignStudentLevel.java
index 2c0adf7..922db59 100644
--- a/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignStudentLevel.java
+++ b/tz/system/system-feign/src/main/java/com/tz/platform/feign/IFeignStudentLevel.java
@@ -2,10 +2,12 @@ package com.tz.platform.feign;
 
 import com.tz.platform.feign.vo.StudentLevelVo;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
 
 import java.util.List;
 
 @FeignClient(value = "tz-system-service")
 public interface IFeignStudentLevel {
+    @RequestMapping(value = "/feign/system/level/list")
     List<StudentLevelVo> list();
 }
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignStudentLevelController.java b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignStudentLevelController.java
index 715c0b6..b112992 100644
--- a/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignStudentLevelController.java
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/feign/FeignStudentLevelController.java
@@ -2,6 +2,8 @@ package com.tz.platform.system.feign;
 
 import com.tz.platform.feign.IFeignStudentLevel;
 import com.tz.platform.feign.vo.StudentLevelVo;
+import com.tz.platform.system.feign.biz.FeignStudentLevelBiz;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -9,8 +11,11 @@ import java.util.List;
 @RestController
 public class FeignStudentLevelController implements IFeignStudentLevel {
 
+    @Autowired
+    private FeignStudentLevelBiz feignStudentLevelBiz;
+
     @Override
     public List<StudentLevelVo> list() {
-        return null;
+        return feignStudentLevelBiz.list();
     }
 }
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/PCStudentLevelController.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/PCStudentLevelController.java
new file mode 100644
index 0000000..977c322
--- /dev/null
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/PCStudentLevelController.java
@@ -0,0 +1,39 @@
+package com.tz.platform.system.pc;
+
+import com.tz.platform.common.core.base.Result;
+import com.tz.platform.system.pc.biz.PCStudentLevelBiz;
+import com.tz.platform.system.pc.dto.ListStudentLevelDTO;
+import com.tz.platform.system.pc.vo.StudentLevelVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping(value = "/pc/system/level")
+public class PCStudentLevelController {
+
+    @Autowired
+    private PCStudentLevelBiz pcStudentLevelBiz;
+
+    @RequestMapping(value = "list")
+    public Result<ListStudentLevelDTO> list(){
+        return  pcStudentLevelBiz.list();
+    }
+
+    @PostMapping(value = "add")
+    public Result<Integer> add(@RequestBody StudentLevelVO studentLevelVO){
+        return  pcStudentLevelBiz.save(studentLevelVO);
+    }
+
+    @PostMapping(value = "update")
+    public Result<String> update(@RequestBody StudentLevelVO studentLevelVO){
+        return  pcStudentLevelBiz.update(studentLevelVO);
+    }
+
+    @PostMapping(value = "delete")
+    public Result<String> delete(@RequestBody StudentLevelVO studentLevelVO){
+        return  pcStudentLevelBiz.delete(studentLevelVO);
+    }
+}
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCStudentLevelBiz.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCStudentLevelBiz.java
new file mode 100644
index 0000000..7e6512b
--- /dev/null
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/biz/PCStudentLevelBiz.java
@@ -0,0 +1,51 @@
+package com.tz.platform.system.pc.biz;
+
+import com.tz.platform.common.core.base.Result;
+import com.tz.platform.entity.StudentLevel;
+import com.tz.platform.repository.StudentLevelDao;
+import com.tz.platform.system.pc.dto.ListStudentLevelDTO;
+import com.tz.platform.system.pc.vo.StudentLevelVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@Component
+public class PCStudentLevelBiz {
+    @Autowired
+    private StudentLevelDao studentLevelDao;
+
+    public Result<ListStudentLevelDTO> list(){
+        ListStudentLevelDTO studentLevelDTO = new ListStudentLevelDTO();
+        List<StudentLevel> studentLevels = studentLevelDao.findAll();
+        studentLevelDTO.setList(studentLevels);
+        return  Result.success(studentLevelDTO);
+    }
+
+    public Result<Integer> save( StudentLevelVO studentLevelVO){
+        if(StringUtils.isEmpty(studentLevelVO.getName())){
+            return Result.error("层次名不能为空");
+        }
+        StudentLevel studentLevel = new StudentLevel();
+        BeanUtils.copyProperties(studentLevelVO,studentLevel);
+        studentLevel =  studentLevelDao.save(studentLevel);
+        return Result.success(studentLevel.getId());
+    }
+
+    public Result<String> update(StudentLevelVO studentLevelVO){
+        Result<Integer> rs=  save(studentLevelVO);
+        if(rs.getCode()== 200){
+            return Result.success("success");
+        }
+       return Result.error(rs.getMsg());
+    }
+
+    public Result<String> delete(StudentLevelVO studentLevelVO){
+        studentLevelDao.deleteById(studentLevelVO.getId());
+        return Result.success("success");
+    }
+
+}
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/ListStudentLevelDTO.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/ListStudentLevelDTO.java
new file mode 100644
index 0000000..c0d9ae8
--- /dev/null
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/ListStudentLevelDTO.java
@@ -0,0 +1,12 @@
+package com.tz.platform.system.pc.dto;
+
+import com.tz.platform.entity.StudentLevel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class ListStudentLevelDTO implements Serializable {
+    List<StudentLevel> list;
+}
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/StudentLevelDTO.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/StudentLevelDTO.java
new file mode 100644
index 0000000..486253f
--- /dev/null
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/dto/StudentLevelDTO.java
@@ -0,0 +1,11 @@
+package com.tz.platform.system.pc.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class StudentLevelDTO implements Serializable {
+    private Integer id;
+    private String name;
+}
diff --git a/tz/system/system-service/src/main/java/com/tz/platform/system/pc/vo/StudentLevelVO.java b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/vo/StudentLevelVO.java
new file mode 100644
index 0000000..010efa5
--- /dev/null
+++ b/tz/system/system-service/src/main/java/com/tz/platform/system/pc/vo/StudentLevelVO.java
@@ -0,0 +1,9 @@
+package com.tz.platform.system.pc.vo;
+
+import lombok.Data;
+
+@Data
+public class StudentLevelVO {
+    private Integer id;
+    private String name;
+}
diff --git a/tz/system/system-service/src/test/java/com/tz/platform/repository/StudentLevelRepositoryTest.java b/tz/system/system-service/src/test/java/com/tz/platform/repository/StudentLevelRepositoryTest.java
new file mode 100644
index 0000000..0ad083e
--- /dev/null
+++ b/tz/system/system-service/src/test/java/com/tz/platform/repository/StudentLevelRepositoryTest.java
@@ -0,0 +1,17 @@
+package com.tz.platform.repository;
+
+import com.tz.platform.entity.StudentLevel;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class StudentLevelRepositoryTest {
+    @Autowired
+    private StudentLevelDao studentLevelDao;
+
+    @Test
+    public  void addLevelTest(){
+
+    }
+}
diff --git a/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/dto/ImageDTO.java b/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/dto/ImageDTO.java
index ea3b58d..59b743b 100644
--- a/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/dto/ImageDTO.java
+++ b/tz/upload/upload-service/src/main/java/com/tz/platform/image/pc/dto/ImageDTO.java
@@ -1,5 +1,6 @@
 package com.tz.platform.image.pc.dto;
 
+import jdk.nashorn.internal.ir.annotations.Ignore;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -9,5 +10,6 @@ import java.io.Serializable;
 public class ImageDTO implements Serializable {
     private String url ;
     private Long id;
+    @Ignore
     private String path;
 }
diff --git a/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/vo/UserVo.java b/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/vo/UserVo.java
index 41ca3e6..7f60900 100644
--- a/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/vo/UserVo.java
+++ b/tz/user/user-feign/src/main/java/com/tz/platform/feign/user/vo/UserVo.java
@@ -46,4 +46,6 @@ public class UserVo {
      * 用户来源(client_id)
      */
     private String userSource;
+
+    private String name;
 }
diff --git a/tz/user/user-service/src/main/java/com/tz/platform/UserServiceApplication.java b/tz/user/user-service/src/main/java/com/tz/platform/UserServiceApplication.java
index f52ceb7..2d1d4b3 100644
--- a/tz/user/user-service/src/main/java/com/tz/platform/UserServiceApplication.java
+++ b/tz/user/user-service/src/main/java/com/tz/platform/UserServiceApplication.java
@@ -8,7 +8,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 
 @SpringBootApplication
 @EnableDiscoveryClient
-@EnableFeignClients
+@EnableFeignClients(basePackages = "com.tz.platform.feign")
 public class UserServiceApplication {
     public static void main(String[] args) {
         SpringApplication.run(UserServiceApplication.class,args);
diff --git a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java
index 06ab827..cf7b28e 100644
--- a/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java
+++ b/tz/user/user-service/src/main/java/com/tz/platform/user/feign/biz/FeignUserBiz.java
@@ -1,9 +1,11 @@
 package com.tz.platform.user.feign.biz;
 
+import com.tz.platform.common.core.base.BaseException;
 import com.tz.platform.common.core.tools.BeanUtils;
 import com.tz.platform.entity.User;
 import com.tz.platform.repository.UserDao;
 import com.tz.platform.feign.user.vo.UserVo;
+import net.bytebuddy.implementation.bytecode.Throw;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -13,7 +15,10 @@ public class FeignUserBiz {
     private UserDao userDao;
 
     public UserVo getByUserNo(Long userNo){
-        User user = userDao.findById(userNo).get();
+        User user = userDao.findById(userNo).orElse(null);
+        if(user == null) {
+            throw  new BaseException("未找到数据");
+        }
         return BeanUtils.copyProperties(user,UserVo.class);
     }