From ded4f0891dd2a76f36844d7c220155e3cd1e6918 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期四, 16 五月 2024 17:10:28 +0800
Subject: [PATCH] feat:部门管理员功能权限控制
---
src/main/resources/mapper/QuestionMapper.xml | 2
src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java | 5
src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java | 3
src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java | 5
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java | 17 --
src/main/java/com/mindskip/xzs/repository/UserMapper.java | 5
src/main/resources/mapper/UserMapper.xml | 37 +++++-
src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java | 25 ---
src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java | 3
src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java | 5
src/main/resources/mapper/ExamPaperMapper.xml | 12 +
src/main/resources/mapper/ExamTemplatesMapper.xml | 8
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java | 22 +--
src/main/java/com/mindskip/xzs/domain/vo/ExamPaperStatisticVO.java | 19 +++
src/main/java/com/mindskip/xzs/service/DepartmentService.java | 3
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationSuccessHandler.java | 4
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java | 13 +
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java | 2
src/main/java/com/mindskip/xzs/domain/ExamPaper.java | 9 +
src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java | 11 +
src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java | 7
src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserPageRequestVM.java | 12 ++
src/main/java/com/mindskip/xzs/controller/admin/UserController.java | 1
src/main/java/com/mindskip/xzs/configuration/spring/security/MyUser.java | 35 +++++
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 14 +
src/main/java/com/mindskip/xzs/base/BaseApiController.java | 10 +
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java | 11 -
src/main/resources/mapper/DepartmentMapper.xml | 4
src/main/java/com/mindskip/xzs/context/WebContext.java | 14 ++
src/main/java/com/mindskip/xzs/service/UserService.java | 10 +
30 files changed, 223 insertions(+), 105 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/base/BaseApiController.java b/src/main/java/com/mindskip/xzs/base/BaseApiController.java
index db1c4da..875cad3 100644
--- a/src/main/java/com/mindskip/xzs/base/BaseApiController.java
+++ b/src/main/java/com/mindskip/xzs/base/BaseApiController.java
@@ -7,6 +7,8 @@
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
+
public class BaseApiController {
/**
@@ -31,4 +33,12 @@
protected User getCurrentUser() {
return webContext.getCurrentUser();
}
+
+ protected boolean isDeptAdmin() {
+ return webContext.isDeptAdmin();
+ }
+
+ protected List<Integer> getAdminDeptIds() {
+ return webContext.getAdminDeptIds();
+ }
}
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/MyUser.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/MyUser.java
new file mode 100644
index 0000000..94bddef
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/MyUser.java
@@ -0,0 +1,35 @@
+package com.mindskip.xzs.configuration.spring.security;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author gonghl
+ * @since 2024/5/16 涓婂崍 10:35
+ */
+
+@Getter
+@Setter
+public class MyUser extends User {
+
+ private Integer role;
+ private List<Integer> deptId;
+
+
+ public MyUser(String username, String password, Collection<? extends GrantedAuthority> authorities, Integer role, List<Integer> deptId) {
+ super(username, password, authorities);
+ this.role = role;
+ this.deptId = deptId;
+ }
+
+ public MyUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities, Integer role, List<Integer> deptId) {
+ super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
+ this.role = role;
+ this.deptId = deptId;
+ }
+}
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
index fd508d2..305b486 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
@@ -9,7 +9,6 @@
import com.mindskip.xzs.service.AuthenticationService;
import com.mindskip.xzs.service.UserService;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.LockedException;
@@ -18,11 +17,11 @@
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
+import java.util.List;
/**
@@ -60,17 +59,15 @@
throw new LockedException("鐢ㄦ埛琚鐢�");
}
-// // 鏌ヨ璇ョ敤鎴锋槸涓嶆槸閮ㄩ棬绠$悊鍛�
-// Integer num = departmentMapper.countByAdminId(user.getId());
-
ArrayList<GrantedAuthority> grantedAuthorities = new ArrayList<>();
// 璧嬩簣閮ㄩ棬绠$悊鍛樿鑹�
if (DeptAdminEnum.YES.getValue().equals(user.getDeptAdmin())) {
grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.DEPT_ADMIN.getRoleName()));
}
grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.fromCode(user.getRole()).getRoleName()));
-
- User authUser = new User(user.getUserName(), user.getPassword(), grantedAuthorities);
+ // 鑾峰彇璇ョ敤鎴风鐞嗛儴闂�
+ List<Integer> deptAdminIds = userService.getDeptAdminIds(user.getId());
+ MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptAdminIds);
return new UsernamePasswordAuthenticationToken(authUser, authUser.getPassword(), authUser.getAuthorities());
}
diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationSuccessHandler.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationSuccessHandler.java
index 69948e8..30f79c6 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationSuccessHandler.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationSuccessHandler.java
@@ -55,8 +55,8 @@
com.mindskip.xzs.domain.User newUser = new com.mindskip.xzs.domain.User();
newUser.setUserName(user.getUserName());
newUser.setImagePath(user.getImagePath());
- // 杩斿洖鏄惁閮ㄩ棬绠$悊鍛樼殑鏍囪瘑
- newUser.setDeptAdmin(user.getDeptAdmin());
+ // 杩斿洖鏄惁閮ㄩ棬绠$悊鍛樼殑鏍囪瘑 1鏄儴闂ㄧ鐞嗗憳
+ newUser.setDeptAdmin(user.getRole().equals(-1) ? "1" : "0");
RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), newUser);
}
} else {
diff --git a/src/main/java/com/mindskip/xzs/context/WebContext.java b/src/main/java/com/mindskip/xzs/context/WebContext.java
index 2d312f3..45a1ce5 100644
--- a/src/main/java/com/mindskip/xzs/context/WebContext.java
+++ b/src/main/java/com/mindskip/xzs/context/WebContext.java
@@ -1,5 +1,6 @@
package com.mindskip.xzs.context;
+import com.mindskip.xzs.configuration.spring.security.MyUser;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -7,6 +8,8 @@
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
+
+import java.util.List;
@Component
@@ -55,4 +58,15 @@
return user;
}
}
+
+ public boolean isDeptAdmin() {
+ MyUser user = (MyUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return user != null && user.getRole() != null && user.getRole().equals(-1);
+ }
+
+ public List<Integer> getAdminDeptIds() {
+ MyUser user = (MyUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+ return user.getDeptId();
+ }
+
}
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
index 1d3da20..9f1e521 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -10,22 +10,18 @@
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.DepartmentVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
-import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.DepartmentService;
import com.mindskip.xzs.service.UserService;
-import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
import java.util.stream.Collectors;
@@ -62,7 +58,7 @@
@RequestMapping(value = "/list", method = RequestMethod.POST)
public RestResponse<List<Department>> getAll(){
- List<Department> res = departmentService.gets(-1);
+ List<Department> res = departmentService.gets(new ArrayList<>());
return RestResponse.ok(res);
}
@@ -95,15 +91,7 @@
@RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST)
public RestResponse<List<DepartmentVO>> getUserDepartment(Integer examPaperId){
- User currentUser = webContext.getCurrentUser();
- Integer deptId = null;
- if (Objects.nonNull(currentUser)) {
- // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
- if ("1".equals(currentUser.getDeptAdmin())) {
- deptId = departmentMapper.selectByAdminId(currentUser.getId());
- }
- }
- List<DepartmentVO> res = departmentService.gets(deptId)
+ List<DepartmentVO> res = departmentService.gets(isDeptAdmin() ? getAdminDeptIds() : null)
.stream().map(e->{
DepartmentVO departmentVO = new DepartmentVO();
List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
@@ -129,4 +117,10 @@
}).collect(Collectors.toList());
return RestResponse.ok(res);
}
+
+ @RequestMapping(value = "/getDeptAdmins", method = RequestMethod.GET)
+ public RestResponse<List<Department>> getDeptAdmins(){
+ return RestResponse.ok(userService.getDeptAdmins(isDeptAdmin() ? getCurrentUser().getId() : null));
+ }
+
}
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
index 2a86dae..e903f59 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
@@ -8,6 +8,7 @@
import com.mindskip.xzs.domain.ExamPaperSubject;
import com.mindskip.xzs.domain.Subject;
import com.mindskip.xzs.domain.exam.ExamPaperAnswerObject;
+import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.service.ExamPaperAnswerService;
import com.mindskip.xzs.service.ExamPaperSubjectService;
import com.mindskip.xzs.service.SubjectService;
@@ -18,7 +19,10 @@
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM;
import com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageResponseVM;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.math.BigDecimal;
@@ -116,8 +120,9 @@
return RestResponse.ok(object);
}
- @RequestMapping(value = "/statistic", method = RequestMethod.GET)
- public RestResponse<Map<String, Object>> statistic(String examPaperId, String departmentId) {
- return RestResponse.ok(examPaperAnswerService.statistic(examPaperId, departmentId));
+ @RequestMapping(value = "/statistic", method = RequestMethod.POST)
+ public RestResponse<Map<String, Object>> statistic(@RequestBody ExamPaperStatisticVO examPaperStatisticVO) {
+ examPaperStatisticVO.setDepartmentId(isDeptAdmin() ? getAdminDeptIds() : null);
+ return RestResponse.ok(examPaperAnswerService.statistic(examPaperStatisticVO));
}
}
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
index 5132110..c32ed50 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
@@ -1,6 +1,5 @@
package com.mindskip.xzs.controller.admin;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
@@ -9,25 +8,19 @@
import com.mindskip.xzs.domain.ExamPaperAnswer;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.UserDepartment;
-import com.mindskip.xzs.domain.vo.ScoreTemplatesCountVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.repository.UserMapper;
import com.mindskip.xzs.service.*;
-import com.mindskip.xzs.utility.minio.DateUtils;
-import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
@RestController("AdminExamPaperGradeController")
@RequestMapping(value = "/api/admin/examPaperGrade")
@@ -105,14 +98,8 @@
@RequestMapping(value = "/page", method = RequestMethod.POST)
public RestResponse<PageInfo<ExamPaperAnswer>> pageJudgeList(@RequestBody ExamPaperGradeQuery query) {
- // 鏌ュ嚭鐢ㄦ埛锛堝苟鍋氭暟鎹潈闄愶級
- User currentUser = webContext.getCurrentUser();
- if (Objects.nonNull(currentUser)) {
- // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
- if ("1".equals(currentUser.getDeptAdmin())) {
- query.setDeptId(departmentMapper.selectByAdminId(currentUser.getId()));
- }
- }
+ // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
+ query.setDeptId(isDeptAdmin() ? getAdminDeptIds() : null);
query.setFullTime();
// 鏌ヨ
PageInfo<ExamPaperAnswer> info = PageHelper.startPage(query.getPageIndex(), query.getPageSize()).doSelectPageInfo(() ->
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java b/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
index 627c892..161d99d 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesController.java
@@ -1,28 +1,21 @@
package com.mindskip.xzs.controller.admin;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.context.WebContext;
-import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.ExamTemplates;
import com.mindskip.xzs.domain.ExamTemplatesSubject;
-import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.ExamTemplatesSubjectMapper;
-import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.ExamTemplatesService;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
-import java.util.List;
-import java.util.Objects;
@RestController("AdminExamTemplatesController")
@RequestMapping(value = "/api/admin/exam/templates")
@@ -36,28 +29,14 @@
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public RestResponse edit(@RequestBody @Valid ExamPaperEditRequestVM model) {
- User currentUser = webContext.getCurrentUser();
- if (Objects.nonNull(currentUser)) {
- // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
- if ("1".equals(currentUser.getDeptAdmin())) {
- Integer deptId = departmentMapper.selectByAdminId(currentUser.getId());
- model.setDeptId(deptId);
- }
- }
examTemplatesService.add(model);
return RestResponse.ok();
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
public RestResponse<PageInfo<ExamTemplatesVO>> list(ExamTemplatesVO examTemplatesVO) throws Exception {
- User currentUser = webContext.getCurrentUser();
- if (Objects.nonNull(currentUser)) {
- // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
- if ("1".equals(currentUser.getDeptAdmin())) {
- Integer deptId = departmentMapper.selectByAdminId(currentUser.getId());
- examTemplatesVO.setDeptId(deptId);
- }
- }
+ // 濡傛灉鏄儴闂ㄧ鐞嗗憳锛岄渶瑕佸仛鏁版嵁鏉冮檺
+ examTemplatesVO.setDeptId(isDeptAdmin() ? getAdminDeptIds() : null);
PageInfo<ExamTemplates> pageInfo = examTemplatesService.getByadmins(examTemplatesVO);
PageInfo<ExamTemplatesVO> info = PageInfoHelper.copyMap(pageInfo, e -> {
ExamTemplatesVO vo = new ExamTemplatesVO();
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/UserController.java b/src/main/java/com/mindskip/xzs/controller/admin/UserController.java
index db30138..1969829 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/UserController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/UserController.java
@@ -52,6 +52,7 @@
@RequestMapping(value = "/page/list", method = RequestMethod.POST)
public RestResponse<PageInfo<UserResponseVM>> pageList(@RequestBody UserPageRequestVM model) {
+ model.setDepartmentId(isDeptAdmin() ? getAdminDeptIds() : null);
PageInfo<User> pageInfo = userService.userPage(model);
PageInfo<UserResponseVM> page = PageInfoHelper.copyMap(pageInfo, d ->
UserResponseVM.from(d));
diff --git a/src/main/java/com/mindskip/xzs/domain/ExamPaper.java b/src/main/java/com/mindskip/xzs/domain/ExamPaper.java
index 8837fd5..ddfaae6 100644
--- a/src/main/java/com/mindskip/xzs/domain/ExamPaper.java
+++ b/src/main/java/com/mindskip/xzs/domain/ExamPaper.java
@@ -74,6 +74,15 @@
private String userIds;
+ private Integer deptId;
+
+ public Integer getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(Integer deptId) {
+ this.deptId = deptId;
+ }
public Integer getId() {
return id;
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/ExamPaperStatisticVO.java b/src/main/java/com/mindskip/xzs/domain/vo/ExamPaperStatisticVO.java
new file mode 100644
index 0000000..b099bdd
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/ExamPaperStatisticVO.java
@@ -0,0 +1,19 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author gonghl
+ * @since 2024/5/16 涓婂崍 11:41
+ */
+
+@Data
+public class ExamPaperStatisticVO {
+
+ private Integer examPaperId;
+
+ private List<Integer> departmentId;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
index 81be8aa..ef83213 100644
--- a/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
+++ b/src/main/java/com/mindskip/xzs/domain/vo/ExamTemplatesVO.java
@@ -1,13 +1,10 @@
package com.mindskip.xzs.domain.vo;
import com.mindskip.xzs.base.BasePage;
-import com.mindskip.xzs.domain.ExamTemplates;
-import com.mindskip.xzs.domain.ExamTemplatesSubject;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
-import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -25,6 +22,6 @@
/**
* 閮ㄩ棬ID
*/
- private Integer deptId;
+ private List<Integer> deptId;
}
diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
index 078fab5..c530c64 100644
--- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -14,7 +14,7 @@
Integer update(Department department);
- List<Department> gets(Integer deptId);
+ List<Department> gets(List<Integer> deptId);
List<DepartmentResponseVM> page(DepartmentResponseVM departmentResponseVM);
diff --git a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
index 93d769f..5ad4dcf 100644
--- a/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/ExamPaperAnswerMapper.java
@@ -4,6 +4,7 @@
import com.mindskip.xzs.domain.ExamTemplatesUserCount;
import com.mindskip.xzs.domain.ScoreTemplatesUserCount;
import com.mindskip.xzs.domain.other.KeyValue;
+import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO;
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
@@ -51,7 +52,7 @@
void insertDefault(ExamPaperEditRequestVM model);
- Map<String, Object> histogram(@Param("examPaperId") String examPaperId, @Param("departmentId") String departmentId);
+ Map<String, Object> histogram(ExamPaperStatisticVO examPaperStatisticVO);
- Map<String, Object> pieChart(@Param("examPaperId") String examPaperId, @Param("departmentId") String departmentId);
+ Map<String, Object> pieChart(ExamPaperStatisticVO examPaperStatisticVO);
}
diff --git a/src/main/java/com/mindskip/xzs/repository/UserMapper.java b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
index f4708eb..9aecd97 100644
--- a/src/main/java/com/mindskip/xzs/repository/UserMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/UserMapper.java
@@ -1,5 +1,6 @@
package com.mindskip.xzs.repository;
+import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.ExamPaperAnswer;
import com.mindskip.xzs.domain.User;
@@ -165,4 +166,8 @@
void updateUserDeptAdmin(UpdateDeptAdminVO form);
void cancelUserDeptAdmin(UpdateDeptAdminVO form);
+
+ List<Integer> getDeptAdminIds(Integer id);
+
+ List<Department> getDeptAdmins(Integer id);
}
diff --git a/src/main/java/com/mindskip/xzs/service/DepartmentService.java b/src/main/java/com/mindskip/xzs/service/DepartmentService.java
index 0abe871..13a8ea4 100644
--- a/src/main/java/com/mindskip/xzs/service/DepartmentService.java
+++ b/src/main/java/com/mindskip/xzs/service/DepartmentService.java
@@ -2,7 +2,6 @@
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.Department;
-import com.mindskip.xzs.domain.Question;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
@@ -40,7 +39,7 @@
Department getById(Integer id);
- List<Department> gets(Integer deptId);
+ List<Department> gets(List<Integer> deptId);
Department getName(String name);
diff --git a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
index 5f24cad..3db0a56 100644
--- a/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
+++ b/src/main/java/com/mindskip/xzs/service/ExamPaperAnswerService.java
@@ -2,6 +2,7 @@
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.*;
+import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
import com.mindskip.xzs.viewmodel.student.exam.ExamPaperSubmitVM;
@@ -64,5 +65,5 @@
PageInfo<ExamPaperAnswer> getByCreatUser(ExamPaperGradeQuery query);
- Map<String, Object> statistic(String examPaperId, String departmentId);
+ Map<String, Object> statistic(ExamPaperStatisticVO examPaperStatisticVO);
}
diff --git a/src/main/java/com/mindskip/xzs/service/UserService.java b/src/main/java/com/mindskip/xzs/service/UserService.java
index 6fc577d..c2c44ba 100644
--- a/src/main/java/com/mindskip/xzs/service/UserService.java
+++ b/src/main/java/com/mindskip/xzs/service/UserService.java
@@ -1,12 +1,12 @@
package com.mindskip.xzs.service;
+import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.ExamPaper;
-import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.User;
+import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM;
-import com.github.pagehelper.PageInfo;
-import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -138,4 +138,8 @@
void setStatus(UserVO user);
User getUserByExam(ExamPaper examPaper);
+
+ List<Integer> getDeptAdminIds(Integer id);
+
+ List<Department> getDeptAdmins(Integer id);
}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
index d4d2290..503fd0b 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -89,10 +89,7 @@
}
@Override
- public List<Department> gets(Integer deptId) {
- if (deptId == null || deptId == -1) {
- deptId = null;
- }
+ public List<Department> gets(List<Integer> deptId) {
return departmentMapper.gets(deptId);
}
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 82a7cd6..98bf0e8 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/ExamPaperAnswerServiceImpl.java
@@ -10,6 +10,7 @@
import com.mindskip.xzs.domain.other.ExamPaperAnswerUpdate;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.task.TaskItemAnswerObject;
+import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO;
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
import com.mindskip.xzs.repository.ExamPaperMapper;
import com.mindskip.xzs.repository.QuestionMapper;
@@ -312,10 +313,10 @@
}
@Override
- public Map<String, Object> statistic(String examPaperId, String departmentId) {
+ public Map<String, Object> statistic(ExamPaperStatisticVO examPaperStatisticVO) {
// 鑾峰彇鍘熷鏁版嵁
- Map<String, Object> histogram = examPaperAnswerMapper.histogram(examPaperId, departmentId);
- Map<String, Object> pieChart = examPaperAnswerMapper.pieChart(examPaperId, departmentId);
+ Map<String, Object> histogram = examPaperAnswerMapper.histogram(examPaperStatisticVO);
+ Map<String, Object> pieChart = examPaperAnswerMapper.pieChart(examPaperStatisticVO);
// 鍒濆鍖栫粨鏋滃鍣�
HashMap<String, Object> map = new HashMap<>();
List<Map<String, Object>> score = new ArrayList<>();
diff --git a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
index b470504..0282db7 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
package com.mindskip.xzs.service.impl;
+import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.ExamPaper;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.UserVO;
@@ -183,4 +184,14 @@
public User getUserByExam(ExamPaper examPaper) {
return userMapper.getUserByExam(examPaper);
}
+
+ @Override
+ public List<Integer> getDeptAdminIds(Integer id) {
+ return userMapper.getDeptAdminIds(id);
+ }
+
+ @Override
+ public List<Department> getDeptAdmins(Integer id) {
+ return userMapper.getDeptAdmins(id);
+ }
}
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java
index a15ec97..376c12b 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/paper/ExamPaperGradeQuery.java
@@ -6,6 +6,7 @@
import lombok.Data;
import java.util.Date;
+import java.util.List;
import java.util.Objects;
/**
@@ -24,7 +25,7 @@
/**
* 閮ㄩ棬ID
*/
- private Integer deptId;
+ private List<Integer> deptId;
/**
* 鍙傝�冧汉
diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserPageRequestVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserPageRequestVM.java
index f0d36d6..2da26fa 100644
--- a/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserPageRequestVM.java
+++ b/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserPageRequestVM.java
@@ -2,12 +2,24 @@
import com.mindskip.xzs.base.BasePage;
+import java.util.List;
+
public class UserPageRequestVM extends BasePage {
private String userName;
private Integer role;
+ private List<Integer> departmentId;
+
+ public List<Integer> getDepartmentId() {
+ return departmentId;
+ }
+
+ public void setDepartmentId(List<Integer> departmentId) {
+ this.departmentId = departmentId;
+ }
+
public String getUserName() {
return userName;
}
diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index ea69ef0..bd448a9 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/src/main/resources/mapper/DepartmentMapper.xml
@@ -41,8 +41,8 @@
t_department td
WHERE
td.deleted = 0
- <if test="deptId != null">
- AND td.id = #{deptId}
+ <if test="deptId != null and deptId.size() > 0">
+ AND td.id in <foreach collection="deptId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
</if>
</select>
diff --git a/src/main/resources/mapper/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index a730052..436730b 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -412,8 +412,11 @@
FROM
t_exam_paper_answer a
INNER JOIN (SELECT * FROM t_user_department
- <if test="departmentId != null and departmentId != ''">
- WHERE department_id = #{departmentId}
+ <if test="departmentId != null and departmentId.size() > 0">
+ WHERE department_id IN
+ <foreach collection="departmentId" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
</if>
GROUP BY user_id) b ON a.create_user = b.user_id
LEFT JOIN t_user c ON a.create_user = c.id
@@ -438,8 +441,11 @@
</if>
LEFT JOIN t_exam_paper_answer c ON a.exam_paper_id = c.exam_paper_id AND a.user_id = c.create_user AND (c.invalid IS NULL OR c.invalid = 0)
INNER JOIN (SELECT * FROM t_user_department
- <if test="departmentId != null and departmentId != ''">
- WHERE department_id = #{departmentId}
+ <if test="departmentId != null and departmentId.size() > 0">
+ WHERE department_id IN
+ <foreach collection="departmentId" item="item" open="(" separator="," close=")">
+ #{item}
+ </foreach>
</if>
GROUP BY user_id) d ON a.user_id = d.user_id
</select>
diff --git a/src/main/resources/mapper/ExamPaperMapper.xml b/src/main/resources/mapper/ExamPaperMapper.xml
index 4708fcc..3ce8086 100644
--- a/src/main/resources/mapper/ExamPaperMapper.xml
+++ b/src/main/resources/mapper/ExamPaperMapper.xml
@@ -21,7 +21,7 @@
<result column="user_ids" jdbcType="VARCHAR" property="userIds" />
</resultMap>
<sql id="Base_Column_List">
- id, name, subject_id, paper_type, grade_level, score, question_count, suggest_time,
+ id, dept_id, name, subject_id, paper_type, grade_level, score, question_count, suggest_time,
limit_start_time, limit_end_time, frame_text_content_id, create_user, create_time,
deleted, task_exam_id, type, user_ids
</sql>
@@ -55,6 +55,9 @@
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
+ </if>
+ <if test="deptId != null">
+ dept_id,
</if>
<if test="name != null">
name,
@@ -108,6 +111,9 @@
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
+ </if>
+ <if test="deptId != null">
+ #{deptId,jdbcType=INTEGER},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
@@ -165,6 +171,9 @@
<if test="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
+ <if test="deptId != null">
+ dept_id = #{deptId,jdbcType=INTEGER},
+ </if>
<if test="subjectId != null">
subject_id = #{subjectId,jdbcType=INTEGER},
</if>
@@ -214,6 +223,7 @@
update t_exam_paper
set name = #{name,jdbcType=VARCHAR},
subject_id = #{subjectId,jdbcType=INTEGER},
+ dept_id = #{deptId,jdbcType=INTEGER},
paper_type = #{paperType,jdbcType=INTEGER},
grade_level = #{gradeLevel,jdbcType=INTEGER},
score = #{score,jdbcType=INTEGER},
diff --git a/src/main/resources/mapper/ExamTemplatesMapper.xml b/src/main/resources/mapper/ExamTemplatesMapper.xml
index 07e28d5..97384b9 100644
--- a/src/main/resources/mapper/ExamTemplatesMapper.xml
+++ b/src/main/resources/mapper/ExamTemplatesMapper.xml
@@ -20,8 +20,8 @@
</sql>
<insert id="add" parameterType="com.mindskip.xzs.domain.ExamTemplates" useGeneratedKeys="true" keyProperty="id">
- insert into t_exam_templates (name, paper_type, suggest_time, title_name, ctime, status, menu_ids,start_time,end_time)
- values (#{name}, #{paperType}, #{suggestTime}, #{titleName}, #{ctime}, #{status}, #{menuIds},#{startTime},#{endTime})
+ insert into t_exam_templates (name, paper_type, dept_id, suggest_time, title_name, ctime, status, menu_ids,start_time,end_time)
+ values (#{name}, #{paperType}, #{deptId}, #{suggestTime}, #{titleName}, #{ctime}, #{status}, #{menuIds},#{startTime},#{endTime})
</insert>
<select id="getTime" resultMap="BaseResultMap">
@@ -70,8 +70,8 @@
<if test="userId != null">
and u.user_id = #{userId}
</if>
- <if test="deptId != null">
- and e.dept_id = #{deptId}
+ <if test="deptId != null and deptId.size() > 0">
+ and e.dept_id in <foreach collection="deptId" item="item" separator="," open="(" close=")"> #{item} </foreach>
</if>
<if test="now !=null">
and #{now} between e.start_time and e.end_time
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index 7acf77b..b47999b 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -192,7 +192,7 @@
<if test="level != null ">
and q.grade_level= #{level}
</if>
- <if test="subjectId != null ">
+ <if test="subjectId != null and subjectId.length > 0">
and qs.subject_id in
<foreach item="subjectId" collection="subjectId" open="(" separator=","
close=")">
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index e04892e..2a28d9a 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -332,17 +332,27 @@
<select id="userPage" resultMap="BaseResultMap"
parameterType="com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM">
SELECT
- <include refid="Base_Column_List"/>
- FROM t_user
- <where>
- and deleted=0
+ a.*
+ FROM t_user a
+ lEFT join
+ (select * from t_user_department
+ <if test="departmentId != null and departmentId.size() > 0">
+ where department_id in <foreach collection="departmentId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
+ </if>
+ group by user_id
+ )
+ b on a.id = b.user_id
+ where
+ a.deleted=0
+ <if test="departmentId != null and departmentId.size() > 0">
+ and b.department_id in <foreach collection="departmentId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
+ </if>
<if test="userName != null and userName != ''">
and real_name like concat('%',#{userName},'%')
</if>
<if test="role != null ">
and role= #{role}
</if>
- </where>
</select>
@@ -481,8 +491,8 @@
t_user tu INNER JOIN t_user_department tud ON tu.id = tud.user_id AND tu.deleted = 0
LEFT JOIN t_exam_paper_answer tepa ON tepa.create_user = tu.id
<where>
- <if test="query.deptId != null">
- AND tud.department_id = #{query.deptId}
+ <if test="query.deptId != null and query.deptId.size() > 0">
+ AND tud.department_id in <foreach collection="query.deptId" item="deptId" open="(" separator="," close=")"> #{deptId} </foreach>
</if>
<if test="query.start != null and query.end != null">
AND tepa.create_time between #{query.start} and #{query.end}
@@ -531,4 +541,17 @@
)))
</update>
+ <select id="getDeptAdminIds" resultType="java.lang.Integer" parameterType="java.lang.Integer">
+ select department_id from t_user_department where dept_admin = 1 and user_id = #{id}
+ </select>
+
+ <select id="getDeptAdmins" resultType="com.mindskip.xzs.domain.Department" parameterType="java.lang.Integer">
+ <if test="id != null">
+ select a.id, a.name from t_department a inner join t_user_department b on a.id = b.department_id where a.deleted = 0 and b.dept_admin = 1 and b.user_id = #{id} order by a.id desc
+ </if>
+ <if test="id == null">
+ select a.id, a.name from t_department a where a.deleted = 0 order by a.id desc
+ </if>
+ </select>
+
</mapper>
--
Gitblit v1.8.0