From e7b5aded4049f9b315f252a26252927aca5bdaae Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期四, 16 五月 2024 18:10:47 +0800
Subject: [PATCH] feat:部门管理员功能权限控制

---
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java                 |    4 
 src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java                    |    9 ++
 src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java                          |    2 
 src/main/java/com/mindskip/xzs/service/UserEventLogService.java                             |    2 
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java                       |    8 +-
 src/main/java/com/mindskip/xzs/service/impl/UserEventLogServiceImpl.java                    |    4 
 src/main/java/com/mindskip/xzs/repository/UserEventLogMapper.java                           |    2 
 src/main/resources/mapper/ExamPaperAnswerMapper.xml                                         |   12 +++
 src/main/java/com/mindskip/xzs/controller/admin/DashboardController.java                    |   11 ++-
 src/main/java/com/mindskip/xzs/service/ExamPaperService.java                                |    4 
 src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java             |   13 ++++
 src/main/resources/mapper/UserEventLogMapper.xml                                            |   12 +++
 src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java                              |    4 
 src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java                        |    2 
 src/main/resources/mapper/ExamPaperMapper.xml                                               |   20 +++++-
 src/main/java/com/mindskip/xzs/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java |    8 +-
 src/main/java/com/mindskip/xzs/repository/ExamPaperQuestionCustomerAnswerMapper.java        |    4 
 src/main/java/com/mindskip/xzs/service/ExamPaperQuestionCustomerAnswerService.java          |    4 
 src/main/resources/mapper/ExamPaperQuestionCustomerAnswerMapper.xml                         |   24 +++++++
 19 files changed, 110 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DashboardController.java b/src/main/java/com/mindskip/xzs/controller/admin/DashboardController.java
index fdafa7d..fe3051c 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DashboardController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DashboardController.java
@@ -35,18 +35,19 @@
     public RestResponse<IndexVM> Index() {
         IndexVM vm = new IndexVM();
 
-        Integer examPaperCount = examPaperService.selectAllCount();
+        List<Integer> deptIds = getAdminDeptIds();
+        Integer examPaperCount = examPaperService.selectAllCount(deptIds);
         Integer questionCount = questionService.selectAllCount();
-        Integer doExamPaperCount = examPaperAnswerService.selectAllCount();
-        Integer doQuestionCount = examPaperQuestionCustomerAnswerService.selectAllCount();
+        Integer doExamPaperCount = examPaperAnswerService.selectAllCount(deptIds);
+        Integer doQuestionCount = examPaperQuestionCustomerAnswerService.selectAllCount(deptIds);
 
         vm.setExamPaperCount(examPaperCount);
         vm.setQuestionCount(questionCount);
         vm.setDoExamPaperCount(doExamPaperCount);
         vm.setDoQuestionCount(doQuestionCount);
 
-        List<Integer> mothDayUserActionValue = userEventLogService.selectMothCount();
-        List<Integer> mothDayDoExamQuestionValue = examPaperQuestionCustomerAnswerService.selectMothCount();
+        List<Integer> mothDayUserActionValue = userEventLogService.selectMothCount(deptIds);
+        List<Integer> mothDayDoExamQuestionValue = examPaperQuestionCustomerAnswerService.selectMothCount(deptIds);
         vm.setMothDayUserActionValue(mothDayUserActionValue);
         vm.setMothDayDoExamQuestionValue(mothDayDoExamQuestionValue);
 
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
index 9facf4a..892f2e3 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperController.java
@@ -25,7 +25,9 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 @RestController("AdminExamPaperController")
 @RequestMapping(value = "/api/admin/exam/paper")
@@ -46,6 +48,10 @@
 
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     public RestResponse<PageInfo<ExamResponseVM>> pageList(@RequestBody ExamPaperPageRequestVM model) {
+        model.setDeptIds(isDeptAdmin() ? getAdminDeptIds() : null);
+        if (Objects.nonNull(model.getLevel())) {
+            model.setDeptIds(Collections.singletonList(model.getLevel()));
+        }
         model.setType("0");
         PageInfo<ExamPaper> pageInfo = examPaperService.page(model);
         PageInfo<ExamResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> {
@@ -126,6 +132,7 @@
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public RestResponse<List<ExamPaper>> list() {
-        return RestResponse.ok(examPaperService.list());
+        List<Integer> deptIds = isDeptAdmin() ? getAdminDeptIds() : null;
+        return RestResponse.ok(examPaperService.list(deptIds));
     }
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 5ad4dcf..4f18d9c 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -22,7 +22,7 @@
 
     List<ExamPaperAnswer> studentPage(ExamPaperAnswerPageVM requestVM);
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
index d756404..d250267 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperMapper.java
@@ -24,7 +24,7 @@
 
     List<PaperInfo> indexPaper(PaperFilter paperFilter);
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 
@@ -38,5 +38,5 @@
 
     List<PaperExcelVO> getPaperExcelById(@Param("id") Integer id);
 
-    List<ExamPaper> list();
+    List<ExamPaper> list(List<Integer> deptIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperQuestionCustomerAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperQuestionCustomerAnswerMapper.java
index 112a7c3..2b4effe 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperQuestionCustomerAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperQuestionCustomerAnswerMapper.java
@@ -19,9 +19,9 @@
 
     int insertList(List<ExamPaperQuestionCustomerAnswer> list);
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
-    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("deptIds") List<Integer> deptIds);
 
     int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates);
 }
diff --git a/src/main/java/com/mindskip/xzs/repository/UserEventLogMapper.java b/src/main/java/com/mindskip/xzs/repository/UserEventLogMapper.java
index 828f16c..c463f05 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserEventLogMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserEventLogMapper.java
@@ -16,5 +16,5 @@
 
     List<UserEventLog> page(UserEventPageRequestVM requestVM);
 
-    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("deptIds") List<Integer> deptIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
index 3db0a56..af21dd9 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
@@ -47,7 +47,7 @@
     ExamPaperSubmitVM examPaperAnswerToVM(Integer id);
 
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
     List<Integer> selectMothCount();
 
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperQuestionCustomerAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperQuestionCustomerAnswerService.java
index 20e17ab..375c198 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperQuestionCustomerAnswerService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperQuestionCustomerAnswerService.java
@@ -30,9 +30,9 @@
     ExamPaperSubmitItemVM examPaperQuestionCustomerAnswerToVM(ExamPaperQuestionCustomerAnswer qa);
 
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
-    List<Integer> selectMothCount();
+    List<Integer> selectMothCount(List<Integer> deptIds);
 
     int updateScore(List<ExamPaperAnswerUpdate> examPaperAnswerUpdates);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
index 94896b7..53094b8 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperService.java
@@ -27,7 +27,7 @@
 
     List<PaperInfo> indexPaper(PaperFilter paperFilter);
 
-    Integer selectAllCount();
+    Integer selectAllCount(List<Integer> deptIds);
 
     List<Integer> selectMothCount();
 
@@ -39,5 +39,5 @@
 
     void missExam(ExamPaperEditRequestVM model);
 
-    List<ExamPaper> list();
+    List<ExamPaper> list(List<Integer> deptIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/UserEventLogService.java b/src/main/java/com/mindskip/xzs/service/UserEventLogService.java
index ffc1ea9..6d35ad6 100644
--- a/src/main/java/com/mindskip/xzs/service/UserEventLogService.java
+++ b/src/main/java/com/mindskip/xzs/service/UserEventLogService.java
@@ -12,5 +12,5 @@
 
     PageInfo<UserEventLog> page(UserEventPageRequestVM requestVM);
 
-    List<Integer> selectMothCount();
+    List<Integer> selectMothCount(List<Integer> deptIds);
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
index 98bf0e8..6b0d9f2 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -161,8 +161,8 @@
     }
 
     @Override
-    public Integer selectAllCount() {
-        return examPaperAnswerMapper.selectAllCount();
+    public Integer selectAllCount(List<Integer> deptIds) {
+        return examPaperAnswerMapper.selectAllCount(deptIds);
     }
 
     @Override
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
index 1b2997f..06c9422 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperQuestionCustomerAnswerServiceImpl.java
@@ -68,15 +68,15 @@
     }
 
     @Override
-    public Integer selectAllCount() {
-        return examPaperQuestionCustomerAnswerMapper.selectAllCount();
+    public Integer selectAllCount(List<Integer> deptIds) {
+        return examPaperQuestionCustomerAnswerMapper.selectAllCount(deptIds);
     }
 
     @Override
-    public List<Integer> selectMothCount() {
+    public List<Integer> selectMothCount(List<Integer> deptIds) {
         Date startTime = DateTimeUtil.getMonthStartDay();
         Date endTime = DateTimeUtil.getMonthEndDay();
-        List<KeyValue> mouthCount = examPaperQuestionCustomerAnswerMapper.selectCountByDate(startTime, endTime);
+        List<KeyValue> mouthCount = examPaperQuestionCustomerAnswerMapper.selectCountByDate(startTime, endTime, deptIds);
         List<String> mothStartToNowFormat = DateTimeUtil.MothStartToNowFormat();
         return mothStartToNowFormat.stream().map(md -> {
             KeyValue keyValue = mouthCount.stream().filter(kv -> kv.getName().equals(md)).findAny().orElse(null);
diff --git a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
index 2c8e75d..ef9e53f 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -221,8 +221,8 @@
 
 
     @Override
-    public Integer selectAllCount() {
-        return examPaperMapper.selectAllCount();
+    public Integer selectAllCount(List<Integer> deptIds) {
+        return examPaperMapper.selectAllCount(deptIds);
     }
 
     @Override
@@ -622,7 +622,7 @@
     }
 
     @Override
-    public List<ExamPaper> list() {
-        return examPaperMapper.list();
+    public List<ExamPaper> list(List<Integer> deptIds) {
+        return examPaperMapper.list(deptIds);
     }
 }
diff --git a/src/main/java/com/mindskip/xzs/service/impl/UserEventLogServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/UserEventLogServiceImpl.java
index e4e8346..5819b72 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/UserEventLogServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/UserEventLogServiceImpl.java
@@ -40,10 +40,10 @@
 
 
     @Override
-    public List<Integer> selectMothCount() {
+    public List<Integer> selectMothCount(List<Integer> deptIds) {
         Date startTime = DateTimeUtil.getMonthStartDay();
         Date endTime = DateTimeUtil.getMonthEndDay();
-        List<KeyValue> mouthCount = userEventLogMapper.selectCountByDate(startTime, endTime);
+        List<KeyValue> mouthCount = userEventLogMapper.selectCountByDate(startTime, endTime, deptIds);
         List<String> mothStartToNowFormat = DateTimeUtil.MothStartToNowFormat();
         return mothStartToNowFormat.stream().map(md -> {
             KeyValue keyValue = mouthCount.stream().filter(kv -> kv.getName().equals(md)).findAny().orElse(null);
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
index 012c726..be7a2b6 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/exam/ExamPaperPageRequestVM.java
@@ -1,7 +1,8 @@
 package com.mindskip.xzs.viewmodel.admin.exam;
 
 import com.mindskip.xzs.base.BasePage;
-import io.swagger.models.auth.In;
+
+import java.util.List;
 
 
 public class ExamPaperPageRequestVM extends BasePage {
@@ -18,6 +19,16 @@
     private Integer templatesId;
     private String status;
 
+    private List<Integer> deptIds;
+
+    public List<Integer> getDeptIds() {
+        return deptIds;
+    }
+
+    public void setDeptIds(List<Integer> deptIds) {
+        this.deptIds = deptIds;
+    }
+
     public Integer getId() {
         return id;
     }
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index 436730b..c9d113f 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -257,7 +257,17 @@
 
 
   <select id="selectAllCount"  resultType="java.lang.Integer">
-		SELECT count(*) from t_exam_paper_answer
+	    select count(*) from t_exam_paper_answer a
+        inner join
+        (select user_id from t_user_department
+        <where>
+            and department_id in
+            <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </where>
+        group by user_id)
+        b on a.create_user = b.user_id
   </select>
 
 
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 3ce8086..f24b711 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -258,15 +258,14 @@
     SELECT
     e.*
     FROM t_exam_paper e
-    left join t_exam_paper_department d on e.id = d.exam_paper_id
     left join t_exam_paper_subject s on e.id = s.exam_paper_id
     <where>
         and e.deleted=0
       <if test="id != null ">
         and e.id= #{id}
       </if>
-      <if test="level != null ">
-        and d.department_id= #{level} and d.deleted = 0
+      <if test="deptIds != null and deptIds.size() > 0">
+        and e.dept_id in <foreach collection="deptIds" item="item" open="(" separator="," close=")"> #{item} </foreach>
       </if>
       <if test="subjectId != null ">
         and s.subject_id= #{subjectId} and s.deleted = 0
@@ -378,6 +377,12 @@
 
   <select id="selectAllCount"  resultType="java.lang.Integer">
 		SELECT count(*) from t_exam_paper where deleted=0
+		<if test="deptIds != null and deptIds.size() > 0">
+          and dept_id in
+          <foreach collection="deptIds" item="item" open="(" close=")" separator=",">
+            #{item}
+          </foreach>
+        </if>
 	</select>
 
   <select id="selectCountByDate"  resultType="com.mindskip.xzs.domain.other.KeyValue">
@@ -434,7 +439,14 @@
   </select>
 
     <select id="list" resultType="com.mindskip.xzs.domain.ExamPaper">
-    select id, name from t_exam_paper order by create_time desc
+    select id, name from t_exam_paper
+    <if test="deptIds != null and deptIds.size() > 0">
+    where dept_id in
+    <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+        #{item}
+    </foreach>
+    </if>
+    order by create_time desc
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ExamPaperQuestionCustomerAnswerMapper.xml b/src/main/resources/mapper/ExamPaperQuestionCustomerAnswerMapper.xml
index 6dd0465..d498019 100644
--- a/src/main/resources/mapper/ExamPaperQuestionCustomerAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperQuestionCustomerAnswerMapper.xml
@@ -258,14 +258,34 @@
 
 
   <select id="selectAllCount"  resultType="java.lang.Integer">
-		SELECT count(*) from t_exam_paper_question_customer_answer
+		SELECT count(*) from t_exam_paper_question_customer_answer a
+        inner join
+        (select user_id from t_user_department
+        <where>
+          and department_id in
+          <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+            #{item}
+          </foreach>
+        </where>
+        group by user_id)
+        b on a.create_user = b.user_id
   </select>
 
 
   <select id="selectCountByDate"  resultType="com.mindskip.xzs.domain.other.KeyValue">
 		SELECT create_time as name,COUNT(create_time) as value from
 		        (
-				  SELECT DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from t_exam_paper_question_customer_answer
+				  SELECT DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from t_exam_paper_question_customer_answer a
+                  inner join
+                  (select user_id from t_user_department
+                  <where>
+                    and department_id in
+                    <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+                      #{item}
+                    </foreach>
+                  </where>
+                  group by user_id)
+                  b on a.create_user = b.user_id
 					WHERE  create_time  between  #{startTime}  and  #{endTime}
 				) a
 		GROUP BY create_time
diff --git a/src/main/resources/mapper/UserEventLogMapper.xml b/src/main/resources/mapper/UserEventLogMapper.xml
index 10db8ed..80037ce 100644
--- a/src/main/resources/mapper/UserEventLogMapper.xml
+++ b/src/main/resources/mapper/UserEventLogMapper.xml
@@ -136,7 +136,17 @@
   <select id="selectCountByDate"  resultType="com.mindskip.xzs.domain.other.KeyValue">
 		SELECT create_time as name,COUNT(create_time) as value from
 		        (
-				  SELECT DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from t_user_event_log
+				  SELECT DATE_FORMAT(create_time,'%Y-%m-%d') as create_time from t_user_event_log a
+                  inner join
+                  (select user_id from t_user_department
+                  <where>
+                    and department_id in
+                    <foreach collection="deptIds" item="item" open="(" separator="," close=")">
+                      #{item}
+                    </foreach>
+                  </where>
+                  group by user_id)
+                  b on a.user_id = b.user_id
 					WHERE  create_time  between  #{startTime}  and  #{endTime}
 				) a
 		GROUP BY create_time

--
Gitblit v1.8.0