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