yangfeng před 1 rokem
rodič
revize
3c9281a5ed

+ 9 - 0
system/system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -438,4 +438,13 @@ public interface ISysUserService extends IService<SysUser> {
      * @return
      */
     List<SysUser> getUserByDepIds(List<String> departIds, String username);
+
+
+    /**
+     * 获取登录用户信息
+     *
+     * @param token
+     * @return
+     */
+    LoginUser getLoginUser(String token);
 }

+ 24 - 0
system/system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -15,6 +15,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.AuthenticationException;
+import org.jeecg.common.api.CommonAPI;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.config.TenantContext;
 import org.jeecg.common.constant.CacheConstant;
@@ -24,6 +26,7 @@ import org.jeecg.common.constant.SymbolConstant;
 import org.jeecg.common.constant.enums.RoleIndexConfigEnum;
 import org.jeecg.common.desensitization.annotation.SensitiveEncode;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.system.vo.SysUserCacheInfo;
 import org.jeecg.common.util.*;
@@ -97,6 +100,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Autowired
     private SysUserTenantMapper userTenantMapper;
 
+    @Lazy
+    @Resource
+    private CommonAPI commonApi;
+
+    @Lazy
+    @Resource
+    private RedisUtil redisUtil;
+
     @Override
     public Result<IPage<SysUser>> queryPageList(HttpServletRequest req, QueryWrapper<SysUser> queryWrapper, Integer pageSize, Integer pageNo) {
         Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
@@ -1284,4 +1295,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userMapper.getUserByDepIds(departIds, username);
     }
 
+    /**
+     * 获取登录用户信息
+     *
+     * @param token
+     * @return
+     */
+    @Override
+    public LoginUser getLoginUser(String token) {
+        String username = JwtUtil.getUsername(token);
+        // 查询用户信息
+        return TokenUtils.getLoginUser(username, commonApi, redisUtil);
+    }
+
 }

+ 123 - 0
web/src/main/java/com/ynfy/app/api/v1/controller/ApiCourseController.java

@@ -0,0 +1,123 @@
+package com.ynfy.app.api.v1.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ynfy.app.api.v1.entity.dto.CourseDTO;
+import com.ynfy.app.api.v1.util.TokenUtil;
+import com.ynfy.buss.course.course.entity.Course;
+import com.ynfy.buss.course.course.service.ICourseService;
+import com.ynfy.buss.course.coursecatalog.service.ICourseCatalogService;
+import com.ynfy.buss.course.usercoursecatalog.entity.vo.UserCourseStudyVO;
+import com.ynfy.buss.course.usercoursecatalog.service.IUserCourseCatalogService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.system.service.ISysPositionService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Api(tags = "course")
+@RestController
+@RequestMapping("/api/v1/course")
+@Slf4j
+public class ApiCourseController extends ApiBaseController {
+    @Autowired
+    private ICourseService courseService;
+
+    @Autowired
+    private ICourseCatalogService courseCatalogService;
+
+    @Autowired
+    private ISysPositionService sysPositionService;
+
+    @Autowired
+    private IUserCourseCatalogService userCourseCatalogService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+
+    /**
+     * 分页列表查询
+     *
+     * @return
+     */
+    @ApiOperation(value = "course-分页列表查询", notes = "course-分页列表查询")
+    @PostMapping(value = "/list")
+    public Result<IPage<Course>> queryPageList(@RequestBody CourseDTO dto) {
+        Page<Course> page = new Page<>(dto.getPageNo(), dto.getPageSize());
+        Course course = new Course();
+        course.setName(dto.getName());
+        LoginUser user = sysUserService.getLoginUser(TokenUtil.getToken(request));
+        IPage<Course> pageList = courseService.selectCourseList(page, course, user);
+
+        //设置课程分类
+        courseService.setCategory(pageList);
+        if (!CollectionUtils.isEmpty(pageList.getRecords())) {
+            List<String> courseIdList = pageList.getRecords().stream().map(Course::getId).collect(Collectors.toList());
+            List<UserCourseStudyVO> studyList = userCourseCatalogService.getUserCourseStudy(courseIdList,
+                    TokenUtil.getUserId(TokenUtil.getToken(request)));
+            if (!CollectionUtils.isEmpty(studyList)) {
+                pageList.getRecords().forEach((o) -> courseService.setCourseStudyProcess(studyList, o));
+            }
+        }
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "course-通过id查询")
+    @ApiOperation(value = "course-通过id查询", notes = "course-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<Course> queryById(@RequestParam(name = "id", required = true) String id) {
+        Course course = courseService.queryById(id);
+        if (course == null) {
+            return Result.error("未找到对应数据");
+        }
+        course.setCatalogList(courseCatalogService.listByCourseId(course.getId()));
+        return Result.OK(course);
+    }
+
+    /**
+     * 获取课程学习明细
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "获取课程学习明细", notes = "获取课程学习明细")
+    @GetMapping(value = "/getCourseStudyDetail")
+    public Result<Course> getCourseStudyDetail(@RequestParam String id) {
+        Course course = courseService.queryById(id);
+        if (course == null) {
+            return Result.error("未找到对应数据");
+        }
+        course.setCatalogList(courseCatalogService.listByCourseId(course.getId()));
+        if (StringUtils.isNotBlank(course.getTeacherPost())) {
+            course.setTeacherPost(sysPositionService.listByCodes(Arrays.asList(course.getTeacherPost().split(","))));
+        }
+
+        //获取课程学习进度
+        List<String> courseIdList = new ArrayList<>();
+        courseIdList.add(course.getId());
+        courseService.setCourseStudyProcess(userCourseCatalogService.getUserCourseStudy(courseIdList,
+                TokenUtil.getUserId(TokenUtil.getToken(request))), course);
+
+        return Result.OK(course);
+    }
+
+}

+ 7 - 1
web/src/main/java/com/ynfy/app/api/v1/controller/ApiExamController.java

@@ -19,6 +19,8 @@ import com.ynfy.buss.exam.userexamresult.service.IUserExamResultService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
@@ -44,6 +46,9 @@ public class ApiExamController extends ApiBaseController {
     @Autowired
     private IUserExamResultService userExamResultService;
 
+    @Autowired
+    private ISysUserService sysUserService;
+
     /**
      * 获取考试列表
      *
@@ -54,7 +59,8 @@ public class ApiExamController extends ApiBaseController {
         Page<Exam> page = new Page<>(dto.getPageNo(), dto.getPageSize());
         Exam exam = new Exam();
         exam.setTitle(dto.getExamTitle());
-        IPage<Exam> pageList = examService.selectExamList(page, exam);
+        LoginUser user = sysUserService.getLoginUser(TokenUtil.getToken(request));
+        IPage<Exam> pageList = examService.selectExamList(page, exam, user);
         return Result.OK(pageList);
     }
 

+ 12 - 0
web/src/main/java/com/ynfy/app/api/v1/controller/ApiPracticeController.java

@@ -47,4 +47,16 @@ public class ApiPracticeController extends ApiBaseController {
         return Result.OK("提交练习成功!", userPracticeService.submitPractice(dto));
     }
 
+
+    /**
+     * 获取练习结果
+     *
+     * @return
+     */
+    @ApiOperation(value = "获取练习结果", notes = "获取练习结果")
+    @GetMapping(value = "/getPracticeResult")
+    public Result<?> getPracticeResult(@RequestParam String id) {
+        return Result.OK(userPracticeService.getPracticeResult(id));
+    }
+
 }

+ 5 - 1
web/src/main/java/com/ynfy/app/api/v1/controller/ApiRepositoryController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ynfy.app.api.v1.entity.dto.RepositoryDTO;
+import com.ynfy.buss.course.course.entity.Course;
 import com.ynfy.buss.exam.question.dto.QuestionDTO;
 import com.ynfy.buss.exam.question.enums.QuestionType;
 import com.ynfy.buss.exam.question.service.IQuestionService;
@@ -11,6 +12,7 @@ import com.ynfy.buss.exam.repository.entity.Repository;
 import com.ynfy.buss.exam.repository.service.IRepositoryService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
@@ -41,7 +43,9 @@ public class ApiRepositoryController extends ApiBaseController {
     public Result<IPage<Repository>> list(@RequestBody RepositoryDTO repositoryDTO) {
         Page<Repository> page = new Page<>(repositoryDTO.getPageNo(), repositoryDTO.getPageSize());
         LambdaQueryWrapper<Repository> query = new LambdaQueryWrapper<>();
-        query.like(Repository::getTitle, repositoryDTO.getRepositoryTitle());
+        if (StringUtils.isNotBlank(repositoryDTO.getRepositoryTitle())) {
+            query.like(Repository::getTitle, repositoryDTO.getRepositoryTitle());
+        }
         IPage<Repository> pageList = repositoryService.page(page, query);
         List<Repository> list = pageList.getRecords();
         if (!CollectionUtils.isEmpty(list)) {

+ 13 - 0
web/src/main/java/com/ynfy/app/api/v1/entity/dto/CourseDTO.java

@@ -0,0 +1,13 @@
+package com.ynfy.app.api.v1.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class CourseDTO {
+
+    private String name;
+
+    private Integer pageNo;
+
+    private Integer pageSize;
+}

+ 3 - 0
web/src/main/java/com/ynfy/app/api/v1/util/TokenUtil.java

@@ -1,8 +1,11 @@
 package com.ynfy.app.api.v1.util;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.authc.AuthenticationException;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
 
 import javax.servlet.http.HttpServletRequest;
 

+ 2 - 1
web/src/main/java/com/ynfy/buss/course/course/controller/CourseController.java

@@ -211,7 +211,8 @@ public class CourseController extends JeecgController<Course, ICourseService> {
                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         Result<IPage<Course>> result = new Result<>();
         Page<Course> page = new Page<>(pageNo, pageSize);
-        IPage<Course> pageList = courseService.selectCourseList(page, course);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        IPage<Course> pageList = courseService.selectCourseList(page, course, user);
 
         //设置课程分类
         courseService.setCategory(pageList);

+ 2 - 1
web/src/main/java/com/ynfy/buss/course/course/service/ICourseService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ynfy.buss.course.course.entity.Course;
 import com.ynfy.buss.course.usercoursecatalog.entity.vo.UserCourseStudyVO;
+import org.jeecg.common.system.vo.LoginUser;
 
 import java.util.List;
 
@@ -17,7 +18,7 @@ public interface ICourseService extends IService<Course> {
 
     void saveCourse(Course course);
 
-    IPage<Course> selectCourseList(IPage<Course> page, Course course);
+    IPage<Course> selectCourseList(IPage<Course> page, Course course, LoginUser user);
 
     /**
      * 设置课程分类

+ 1 - 2
web/src/main/java/com/ynfy/buss/course/course/service/impl/CourseServiceImpl.java

@@ -55,8 +55,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
      * 分页查询
      */
     @Override
-    public IPage<Course> selectCourseList(IPage<Course> page, Course course) {
-        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+    public IPage<Course> selectCourseList(IPage<Course> page, Course course, LoginUser user) {
         if (StringUtils.isNotBlank(course.getName())) {
             course.setName(course.getName().replace("*", ""));
         }

+ 2 - 1
web/src/main/java/com/ynfy/buss/exam/exam/controller/ExamController.java

@@ -191,7 +191,8 @@ public class ExamController extends JeecgController<Exam, IExamService> {
                                           @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         Result<IPage<Exam>> result = new Result<>();
         Page<Exam> page = new Page<>(pageNo, pageSize);
-        IPage<Exam> pageList = examService.selectExamList(page, exam);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        IPage<Exam> pageList = examService.selectExamList(page, exam, user);
         result.setSuccess(true);
         result.setResult(pageList);
         return result;

+ 2 - 1
web/src/main/java/com/ynfy/buss/exam/exam/service/IExamService.java

@@ -7,6 +7,7 @@ import com.ynfy.buss.exam.exam.dto.UserExamDTO;
 import com.ynfy.buss.exam.exam.entity.Exam;
 import com.ynfy.buss.exam.question.entity.Question;
 import com.ynfy.buss.exam.userexam.entity.UserExam;
+import org.jeecg.common.system.vo.LoginUser;
 
 import java.util.List;
 
@@ -20,7 +21,7 @@ public interface IExamService extends IService<Exam> {
 
     Exam detail(String id);
 
-    IPage<Exam> selectExamList(IPage<Exam> page, Exam exam);
+    IPage<Exam> selectExamList(IPage<Exam> page, Exam exam, LoginUser use);
 
     /**
      * 创建考试

+ 1 - 2
web/src/main/java/com/ynfy/buss/exam/exam/service/impl/ExamServiceImpl.java

@@ -113,8 +113,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
      * 分页查询
      */
     @Override
-    public IPage<Exam> selectExamList(IPage<Exam> page, Exam exam) {
-        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+    public IPage<Exam> selectExamList(IPage<Exam> page, Exam exam, LoginUser user) {
         if (!Objects.isNull(exam) && StringUtils.isNotBlank(exam.getTitle())) {
             exam.setTitle(exam.getTitle().replace("*", ""));
         }

+ 1 - 1
web/src/main/resources/application.yml

@@ -3,4 +3,4 @@ spring:
     name: exam-boot
     version: 1.0.0
   profiles:
-    active: prod
+    active: dev