浏览代码

使用策略模式优化了部分代码

xuxuan 4 年之前
父节点
当前提交
7463bd42af

+ 29 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Factory/PermissionStrategyFactory.java

@@ -0,0 +1,29 @@
+package cn.iselab.mooctest.site.Factory;
+
+
+import cn.iselab.mooctest.site.Strategy.*;
+
+public class PermissionStrategyFactory {
+
+
+    public static PermissionGetStrategy getStrategy(String resource) throws Exception {
+        if ("app".equals(resource)) {
+            return new appStrategy();
+        } else if ("case".equals(resource)) {
+            return new CaseStrategy();
+        } else if ("group".equals(resource)) {
+            return new GroupStrategy();
+        } else if ("paper".equals(resource)) {
+            return new PaperStrategy();
+        } else if ("report".equals(resource)) {
+            return new ReportStrategy();
+        } else if ("task".equals(resource)) {
+            return new ExamStrategy();
+        } else {
+            throw new Exception("informal resource format");
+        }
+
+
+    }
+
+}

+ 22 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/CaseStrategy.java

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.site.Strategy;
+
+import cn.iselab.mooctest.site.models.instancePermission.CasePermission;
+import cn.iselab.mooctest.site.service.instancePermission.CasePermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class CaseStrategy  implements  PermissionGetStrategy{
+    @Autowired
+    CasePermissionService casePermissionService;
+
+
+
+
+    @Override
+    public List<String> getPermission(String resource, Long instanceId, Long userId) {
+        List<CasePermission> casePermissions = casePermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return casePermissions.stream().map(CasePermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 22 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/ExamStrategy.java

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.site.Strategy;
+
+
+import cn.iselab.mooctest.site.models.instancePermission.ExamPermission;
+import cn.iselab.mooctest.site.service.instancePermission.ExamPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ExamStrategy implements  PermissionGetStrategy {
+    @Autowired
+    ExamPermissionService examPermissionService;
+
+
+
+    @Override
+    public List<String> getPermission(String resource, Long instanceId, Long userId) {
+        List<ExamPermission> examPermissions = examPermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return examPermissions.stream().map(ExamPermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 20 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/GroupStrategy.java

@@ -0,0 +1,20 @@
+package cn.iselab.mooctest.site.Strategy;
+
+import cn.iselab.mooctest.site.models.instancePermission.GroupPermission;
+import cn.iselab.mooctest.site.service.instancePermission.GroupPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class GroupStrategy implements  PermissionGetStrategy{
+    @Autowired
+    GroupPermissionService groupPermissionService;
+
+
+    @Override
+    public List<String> getPermission(String resource, Long instanceId, Long userId) {
+        List<GroupPermission> groupPermissions = groupPermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return groupPermissions.stream().map(GroupPermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 21 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/PaperStrategy.java

@@ -0,0 +1,21 @@
+package cn.iselab.mooctest.site.Strategy;
+
+
+import cn.iselab.mooctest.site.models.instancePermission.PaperPermission;
+import cn.iselab.mooctest.site.service.instancePermission.PaperPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class PaperStrategy implements PermissionGetStrategy {
+    @Autowired
+    PaperPermissionService paperPermissionService;
+
+
+    @Override
+    public List<String> getPermission(String resource, Long instanceId, Long userId) {
+        List<PaperPermission> paperPermissions = paperPermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return paperPermissions.stream().map(PaperPermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 10 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/PermissionGetStrategy.java

@@ -0,0 +1,10 @@
+package cn.iselab.mooctest.site.Strategy;
+
+
+import java.util.List;
+
+public interface PermissionGetStrategy {
+    public List<String> getPermission(String resource,Long instanceId,Long userId);
+
+
+}

+ 21 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/ReportStrategy.java

@@ -0,0 +1,21 @@
+package cn.iselab.mooctest.site.Strategy;
+
+
+import cn.iselab.mooctest.site.models.instancePermission.ReportPermission;
+import cn.iselab.mooctest.site.service.instancePermission.ReportPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ReportStrategy implements PermissionGetStrategy {
+    @Autowired
+    ReportPermissionService reportPermissionService;
+
+
+    @Override
+    public List<String> getPermission(String resource, Long instanceId, Long userId) {
+        List<ReportPermission> reportPermissions = reportPermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return reportPermissions.stream().map(ReportPermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 20 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Strategy/appStrategy.java

@@ -0,0 +1,20 @@
+package cn.iselab.mooctest.site.Strategy;
+
+import cn.iselab.mooctest.site.models.instancePermission.TargetPermission;
+import cn.iselab.mooctest.site.service.instancePermission.TargetPermissionService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class appStrategy implements  PermissionGetStrategy {
+    @Autowired
+    TargetPermissionService targetPermissionService;
+
+
+    @Override
+    public List<String> getPermission(String resource,Long userId,Long instanceId) {
+        List< TargetPermission > targetPermissions = targetPermissionService.getByUserIdAndInstanceId(userId, instanceId);
+        return targetPermissions.stream().map(TargetPermission::getOperation).collect(Collectors.toList());
+    }
+}

+ 8 - 3
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/GroupServiceImpl.java

@@ -25,13 +25,18 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.*;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.math.BigInteger;
 import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * @author sean

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

@@ -1,6 +1,6 @@
 package cn.iselab.mooctest.site.web.logic.impl;
 
-import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import  cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.iselab.mooctest.rpc.user.data.UserIntegralDTO;
 import cn.iselab.mooctest.site.common.constant.Constants;