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