From 1d53c2aabb4a5ba45406a3ada89a157815028464 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 30 五月 2024 09:36:16 +0800
Subject: [PATCH] 课目下拉数据权限修复

---
 src/main/java/com/mindskip/xzs/domain/enums/RoleEnum.java               |    6 +++---
 src/main/resources/mapper/SubjectMapper.xml                             |    2 +-
 src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java |    6 +++---
 src/main/java/com/mindskip/xzs/repository/SubjectMapper.java            |    2 +-
 src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java     |   12 +++++-------
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
index c116a5d..faa4c6c 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -187,7 +187,7 @@
         data.add(questionImportVO3);
 
         // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛�
-        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
+        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE);
         List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList());
 
         EasyExcel.write(response.getOutputStream(), QuestionImportVO.class)
@@ -248,7 +248,7 @@
         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
 
         // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛�
-        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
+        List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE);
         List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList());
         EasyExcel.write(response.getOutputStream(), QuestionImportVO.class)
                 .sheet("棰樼洰瀵煎嚭鏁版嵁")
@@ -341,7 +341,7 @@
 
 
                     // 鏌ュ嚭鎵�鏈夌殑璇剧洰
-                    List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>());
+                    List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE);
                     List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT));
                     List<Subject> targetSubject = subjects.stream()
                             .filter(subject -> subjectNames.contains(subject.getName()))
diff --git a/src/main/java/com/mindskip/xzs/domain/enums/RoleEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/RoleEnum.java
index eddee89..91a56aa 100644
--- a/src/main/java/com/mindskip/xzs/domain/enums/RoleEnum.java
+++ b/src/main/java/com/mindskip/xzs/domain/enums/RoleEnum.java
@@ -10,7 +10,7 @@
     ADMIN(3, "ADMIN"),
     DEPT_ADMIN(-1, "DEPT_ADMIN");
 
-    int code;
+    Integer code;
     String name;
 
     RoleEnum(int code, String name) {
@@ -30,11 +30,11 @@
         return keyMap.get(code);
     }
 
-    public int getCode() {
+    public Integer getCode() {
         return code;
     }
 
-    public void setCode(int code) {
+    public void setCode(Integer code) {
         this.code = code;
     }
 
diff --git a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java b/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
index f552309..f893e99 100644
--- a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
@@ -12,7 +12,7 @@
 
     List<Subject> getSubjectByLevel(Integer level);
 
-    List<Subject> allSubject(@Param("deptIds") List<Integer> deptIds);
+    List<Subject> allSubject(@Param("deptIds") List<Integer> deptIds, @Param("admin") Boolean admin);
 
     List<Subject> page(SubjectPageRequestVM requestVM);
 
diff --git a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
index bf9c107..68cde6a 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/SubjectServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.mindskip.xzs.context.WebContext;
 import com.mindskip.xzs.domain.Subject;
+import com.mindskip.xzs.domain.enums.RoleEnum;
 import com.mindskip.xzs.repository.BaseMapper;
 import com.mindskip.xzs.repository.DepartmentMapper;
 import com.mindskip.xzs.repository.SubjectMapper;
@@ -46,13 +47,10 @@
 
     @Override
     public List<Subject> allSubject() {
-        // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛屽彧鏌ュ叧鑱旇閮ㄩ棬鐨勮鐩�
-        boolean deptAdmin = webContext.isDeptAdmin();
-        List<Integer> deptIds = new ArrayList<>();
-        if (deptAdmin) {
-            deptIds = webContext.getAdminDeptIds();
-        }
-        return subjectMapper.allSubject(deptIds);
+        // 鍙煡鑷繁閮ㄩ棬鐨勮鐩�
+        List<Integer> deptIds = webContext.getAdminDeptIds();
+        Boolean admin = RoleEnum.ADMIN.getCode().equals(webContext.getCurrentUser().getRole());
+        return subjectMapper.allSubject(deptIds, admin);
     }
 
     @Override
diff --git a/src/main/resources/mapper/SubjectMapper.xml b/src/main/resources/mapper/SubjectMapper.xml
index c7b6258..fac9514 100644
--- a/src/main/resources/mapper/SubjectMapper.xml
+++ b/src/main/resources/mapper/SubjectMapper.xml
@@ -118,7 +118,7 @@
         select
         ts.id, ts.name
         from t_subject ts
-        <if test="deptIds != null and deptIds.size > 0">
+        <if test="admin == false and deptIds != null and deptIds.size > 0">
             INNER JOIN t_subject_dept tsd ON tsd.subject_id = ts.id
             AND tsd.dept_id IN
             <foreach collection="deptIds" open="(" separator="," close=")" item="deptId">#{deptId}</foreach>

--
Gitblit v1.8.0