Преглед изворни кода

增加删除授权课程的接口

guochao пре 5 година
родитељ
комит
0cc5464636

+ 3 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/User2ThemeDao.java

@@ -18,10 +18,13 @@ import java.util.List;
 @Transactional
 public interface User2ThemeDao extends CrudRepository<User2Theme,Long> {
     User2Theme findByUserIdAndThemeId(long userId,long themeId);
+    List<User2Theme> findAllByUserIdAndThemeId(long userId, long themeId);
     List<User2Theme> findByUserId(long userId);
 
     @Modifying
     @Query("update User2Theme u2t set u2t.operation = :operation where u2t.id= :id")
     void updateOperationById(@Param("id") long id, @Param("operation") String operation);
+
+    User2Theme findByUserIdAndThemeIdAndOperation(long userId, long themeId, String operation);
 }
 

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/User2ThemeService.java

@@ -16,6 +16,10 @@ public interface User2ThemeService {
     void createRelation(long userId, long themeId);
     void createOperationRelation(long userId, long themeId, String operation);
     User2Theme findByUserIdAndThemeId(long userId, long themeId);
+    List<User2Theme> findAllByUserIdAndThemeId(long userId, long themeId);
+    User2Theme findByUserIdAndThemeIdAndOperation(long userId, long themeId, String operation);
     void updateOperationById(long id, String operation);
     List<User2Theme> findByUserId(long userId);
+
+    void delete(User2Theme user2Theme);
 }

+ 15 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/User2ThemeServiceImpl.java

@@ -34,6 +34,16 @@ public class User2ThemeServiceImpl implements User2ThemeService {
     }
 
     @Override
+    public List<User2Theme> findAllByUserIdAndThemeId(long userId, long themeId){
+        return user2ThemeDao.findAllByUserIdAndThemeId(userId,themeId);
+    }
+
+    @Override
+    public User2Theme findByUserIdAndThemeIdAndOperation(long userId, long themeId, String operation) {
+        return user2ThemeDao.findByUserIdAndThemeIdAndOperation(userId,themeId,operation);
+    }
+
+    @Override
     public void updateOperationById(long id, String operation) {
         user2ThemeDao.updateOperationById(id, operation);
     }
@@ -42,4 +52,9 @@ public class User2ThemeServiceImpl implements User2ThemeService {
     public List<User2Theme> findByUserId(long userId) {
         return user2ThemeDao.findByUserId(userId);
     }
+
+    @Override
+    public void delete(User2Theme user2Theme) {
+        user2ThemeDao.delete(user2Theme);
+    }
 }

+ 12 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ThemeController.java

@@ -522,7 +522,6 @@ public class ThemeController extends BaseSearchController {
     @GetMapping(value = UrlConstants.API + "course/{courseId}")
     public ResponseVO<CourseVO> course(@PathVariable("courseId")Long courseId) {
         Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
-//        CourseVO courseVO = themeLogic.getCourse(courseId, userId);
         CourseVO courseVO = themeLogic.getCourse(courseId, userId);
         if(courseVO.getThemeDetailVO().getType() != 0) {
             log.info("这个不是一个课程:{}, 访问用户为:{}",courseId ,userId);
@@ -647,6 +646,18 @@ public class ThemeController extends BaseSearchController {
         return new ResponseVO<>(ServerCode.SUCCESS, themeLogic.authorisedCoursesList(teacherId,courseIdList));
     }
 
+    /**
+     * 管理员为教师授权课程-删除授权课程
+     * @return
+     */
+    @RequiresPermissions("manager:update")
+    @GetMapping(value = UrlConstants.API + "delete/authorised/courses/{teacherId}/{courseId}")
+    public ResponseVO<Boolean> authorisedTeacherCourses(@PathVariable(name = "teacherId") Long teacherId, @PathVariable Long courseId) {
+        Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
+        log.info("userId: {}删除授权课程,参数:{}",userId,teacherId);
+        return new ResponseVO<>(ServerCode.SUCCESS, themeLogic.deleteAuthorisedCourse(teacherId,courseId));
+    }
+
     @RequestMapping(value = UrlConstants.API + "theme/{themeId}/case/{caseId}", method = RequestMethod.PUT)
     @RequiresPermissions(value = "theme:create")
     public ResponseVO<CaseExtendsVO> addCases2theme(@PathVariable("themeId")long themeId, @PathVariable("caseId") long caseId) {

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/wrapper/ThemeVOWrapper.java

@@ -91,7 +91,7 @@ public class ThemeVOWrapper {
 
     public boolean varifyIfPurchase(long themeDetailId) {
         Long userId = (Long) SecurityUtils.getSubject().getSession().getAttribute("userId");
-        return user2ThemeService.findByUserIdAndThemeId(userId, themeDetailId) != null || themeService.isUserJoinCourse(themeDetailId,userId);
+        return user2ThemeService.findAllByUserIdAndThemeId(userId, themeDetailId).size() > 0 || themeService.isUserJoinCourse(themeDetailId,userId);
     }
 
     public ThemeVO wrapper(Theme theme) {

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ThemeLogic.java

@@ -134,4 +134,6 @@ public interface ThemeLogic{
     void authorisedCourseTeacherRole(Long teacherId, Long userId);
 
     Boolean checkCourseTeacherRole(Long teacherId, Long userId);
+
+    Boolean deleteAuthorisedCourse(Long teacherId, Long courseId);
 }

+ 2 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ProductProcessLogicImpl.java

@@ -44,7 +44,8 @@ public class ProductProcessLogicImpl implements ProductProcessLogic {
                 JSONObject entity = entities.getJSONObject(i);
                 switch (entity.getString("entityType")){//根据不同Type进行不同处理
                     case "THEME":
-                        if (user2ThemeService.findByUserIdAndThemeId(userId, entity.getLong("entityId"))==null) {
+//                        if (user2ThemeService.findByUserIdAndThemeId(userId, entity.getLong("entityId"))==null) {
+                        if (user2ThemeService.findAllByUserIdAndThemeId(userId, entity.getLong("entityId")).size()==0) {
                             user2ThemeService.createOperationRelation(userId, entity.getLong("entityId"),"view");//关联不存在则建立关联
                             Theme2Group theme2Group = theme2GroupService.findByThemeId(entity.getLong("entityId"));
                             if (theme2Group != null && !groupService.isUserInGroup(userId, theme2Group.getGroupId()))

+ 55 - 33
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ThemeLogicImpl.java

@@ -286,14 +286,17 @@ public class ThemeLogicImpl implements ThemeLogic {
     }
 
     private void checkCourseViewAuth(Long userId, ThemeDetailVO themeDetailVO) {
-        User2Theme user2Theme = user2ThemeService.findByUserIdAndThemeId(userId, themeDetailVO.getId());
-        if(user2Theme == null){
+        List<User2Theme> user2ThemeList = user2ThemeService.findAllByUserIdAndThemeId(userId, themeDetailVO.getId());
+        if(user2ThemeList.size() == 0){
             throw new HttpForbiddenException("当前用户没有查看此课程的权限");
         }
-        if(user2Theme == null || !user2Theme.getOperation().equals("*")){
-            themeDetailVO.setCanEdit(false);
-        }else{
-            themeDetailVO.setCanEdit(true);
+        themeDetailVO.setCanEdit(false);
+        for (User2Theme user2Theme : user2ThemeList){
+            System.out.println(user2Theme.getOperation());
+            if(user2Theme.getOperation().equals("*")){
+                themeDetailVO.setCanEdit(true);
+                break;
+            }
         }
     }
 
@@ -501,9 +504,9 @@ public class ThemeLogicImpl implements ThemeLogic {
 
     @Override
     public CourseVO getCourse(Long id, Long userId) {
-        // 判断教师时候具有查看查看当前课程的权限
-        User2Theme user2Theme = user2ThemeService.findByUserIdAndThemeId(userId, id);
-        if(user2Theme == null){
+        // 判断教师是否具有查看查看当前课程的权限
+        List<User2Theme> user2ThemeList = user2ThemeService.findAllByUserIdAndThemeId(userId, id);
+        if(user2ThemeList.size() == 0){
             throw new HttpForbiddenException("当前用户没有查看此课程的权限");
         }
 
@@ -536,11 +539,15 @@ public class ThemeLogicImpl implements ThemeLogic {
         }
         CourseVO courseVO = themeVOWrapper.wrapTheme2CourseVO(theme, themeEntityRelations);
         // 判断是否有权限编辑课程
-        if(user2Theme == null || !user2Theme.getOperation().equals("*")){
-            courseVO.getThemeDetailVO().setCanEdit(false);
-        }else{
-            courseVO.getThemeDetailVO().setCanEdit(true);
+        courseVO.getThemeDetailVO().setCanEdit(false);
+        for (User2Theme user2Theme : user2ThemeList){
+            System.out.println(user2Theme.getOperation());
+            if(user2Theme.getOperation().equals("*")){
+                courseVO.getThemeDetailVO().setCanEdit(true);
+                break;
+            }
         }
+
         // 获取课程中的实体数量
         List<ThemeEntityRelations> entityRelationsList = themeService.getThemeEntityRelations(id);
 //        if(entityRelationsList.size() != 0){
@@ -753,7 +760,8 @@ public class ThemeLogicImpl implements ThemeLogic {
 
     @Override
     public void buyTheme(long userId, long themeId) {
-        if(user2ThemeService.findByUserIdAndThemeId(userId,themeId)==null)
+//        if(user2ThemeService.findByUserIdAndThemeId(userId,themeId) == null)
+        if(user2ThemeService.findAllByUserIdAndThemeId(userId,themeId).size()==0)
             user2ThemeService.createRelation(userId,themeId);
     }
 
@@ -1099,7 +1107,7 @@ public class ThemeLogicImpl implements ThemeLogic {
 
     @Override
     public Boolean authorisedCoursesList(Long teacherId, List<Long> courseIdList){
-//        // 判断教师是否具有自定义课程教师的角色
+        // 判断教师是否具有自定义课程教师的角色
         List<Role> roleIdsOfUser = roleService.getRolesOfUser(teacherId);
         Role courseTeacher = roleService.getRoleByRoleName("courseTeacher");
         if(!roleIdsOfUser.contains(courseTeacher)){
@@ -1108,29 +1116,25 @@ public class ThemeLogicImpl implements ThemeLogic {
 
         if(courseIdList.size() <= 0){
             throw new HttpBadRequestException("未选择授权课程!");
-//            return true;
-        }else{
-            courseIdList.stream().peek(courseId -> {
-                User2Theme user2Theme = user2ThemeService.findByUserIdAndThemeId(teacherId, courseId);
-                if(user2Theme != null){
-                    ThemeDetail themeDetail = themeService.getThemeDetailById(user2Theme.getThemeId());
+        }
+        courseIdList.stream().peek(courseId -> {
+            List<User2Theme> user2ThemeList = user2ThemeService.findAllByUserIdAndThemeId(teacherId, courseId);
+            if(user2ThemeList.size() > 0){
+                ThemeDetail themeDetail = themeService.getThemeDetailById(courseId);
+                user2ThemeList.stream().peek(user2Theme -> {
+                    System.out.println(user2Theme.getOperation());
                     if(user2Theme.getOperation().equals(User2Theme.AUTH_USE)){
                         throw new HttpBadRequestException("该教师已有\""+themeDetail.getTitle()+"\"课程的使用权限!");
                     }else if(user2Theme.getOperation().equals(User2Theme.AUTH_ALL)){
                         throw new HttpBadRequestException("该教师已有\""+themeDetail.getTitle()+"\"课程的所有权限!");
                     }
-                }
-            }).collect(Collectors.toList());
-
-            courseIdList.stream().peek(courseId -> {
-                User2Theme user2Theme = user2ThemeService.findByUserIdAndThemeId(teacherId, courseId);
-                if(user2Theme != null){
-                    user2ThemeService.updateOperationById(user2Theme.getId(), User2Theme.AUTH_USE);
-                }else{
-                    user2ThemeService.createOperationRelation(teacherId, courseId, User2Theme.AUTH_USE);
-                }
-            }).collect(Collectors.toList());
-        }
+                }).collect(Collectors.toList());
+            }
+        }).collect(Collectors.toList());
+
+        courseIdList.stream().peek(courseId -> {
+            user2ThemeService.createOperationRelation(teacherId, courseId, User2Theme.AUTH_USE);
+        }).collect(Collectors.toList());
         return true;
     }
 
@@ -1158,4 +1162,22 @@ public class ThemeLogicImpl implements ThemeLogic {
         Role courseTeacher = roleService.findById(9L);
         return roleIdsOfUser.contains(courseTeacher);
     }
+
+    @Override
+    public Boolean deleteAuthorisedCourse(Long teacherId, Long courseId){
+        // 判断教师是否具有自定义课程教师的角色
+        List<Role> roleIdsOfUser = roleService.getRolesOfUser(teacherId);
+        Role courseTeacher = roleService.getRoleByRoleName("courseTeacher");
+        if(!roleIdsOfUser.contains(courseTeacher)){
+            throw new HttpBadRequestException("当前教师并无自定义课程的权限,请先赋予教师权限后进行操作!");
+        }
+
+        User2Theme user2Theme = user2ThemeService.findByUserIdAndThemeIdAndOperation(teacherId, courseId, User2Theme.AUTH_USE);
+        ThemeDetail themeDetail = themeService.getThemeDetailById(courseId);
+        if(user2Theme == null){
+            throw new HttpBadRequestException("当前教师并无\""+themeDetail.getTitle()+"\"的使用权限!");
+        }
+        user2ThemeService.delete(user2Theme);
+        return true;
+    }
 }