AssessmentPermissionService.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.zxyj.service;
  2. import com.zxyj.service.api.AssessmentPermissionServiceInterface;
  3. import javax.annotation.Resource;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.zxyj.entity.DanAssessmentResult;
  6. import com.zxyj.entity.User;
  7. import com.zxyj.mapper.DanAssessmentResultMapper;
  8. import com.zxyj.mapper.UserMapper;
  9. import org.springframework.stereotype.Service;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.stream.Collectors;
  13. /**
  14. * 测评报告权限服务
  15. */
  16. @Service
  17. public class AssessmentPermissionService {
  18. @Resource
  19. private GuideHierarchyService guideHierarchyService;
  20. @Resource
  21. private UserMapper userMapper;
  22. /**
  23. * 检查指导师是否有权限查看测评报告
  24. */
  25. public boolean canViewAssessment(Long guideId, Long assessmentId) {
  26. DanAssessmentResult assessment = getAssessmentById(assessmentId);
  27. if (assessment == null) {
  28. return false;
  29. }
  30. // 检查是否是测评的指导师
  31. if (assessment.getTeacherId().equals(guideId)) {
  32. return true;
  33. }
  34. // 检查是否是下级指导师
  35. return guideHierarchyService.isChildGuide(guideId, assessment.getTeacherId());
  36. }
  37. /**
  38. * 获取指导师可以查看的测评报告列表
  39. */
  40. public List<DanAssessmentResult> getAccessibleAssessments(Long guideId) {
  41. // 获取所有下级指导师
  42. List<User> childGuides = guideHierarchyService.getAllChildGuides(guideId);
  43. if (childGuides.isEmpty()) {
  44. return new ArrayList<>();
  45. }
  46. // 获取下级指导师的测评报告
  47. List<Long> childGuideIds = childGuides.stream()
  48. .map(User::getId)
  49. .collect(Collectors.toList());
  50. LambdaQueryWrapper<DanAssessmentResult> wrapper = new LambdaQueryWrapper<>();
  51. wrapper.in(DanAssessmentResult::getTeacherId, childGuideIds)
  52. .eq(DanAssessmentResult::getStatus, "completed")
  53. .orderByDesc(DanAssessmentResult::getAssessmentDate);
  54. return danAssessmentResultMapper.selectList(wrapper);
  55. }
  56. /**
  57. * 获取指导师自己的测评报告
  58. */
  59. public List<DanAssessmentResult> getOwnAssessments(Long guideId) {
  60. LambdaQueryWrapper<DanAssessmentResult> wrapper = new LambdaQueryWrapper<>();
  61. wrapper.eq(DanAssessmentResult::getTeacherId, guideId)
  62. .eq(DanAssessmentResult::getStatus, "completed")
  63. .orderByDesc(DanAssessmentResult::getAssessmentDate);
  64. return danAssessmentResultMapper.selectList(wrapper);
  65. }
  66. /**
  67. * 获取测评报告
  68. */
  69. public DanAssessmentResult getAssessmentById(Long assessmentId) {
  70. return danAssessmentResultMapper.selectById(assessmentId);
  71. }
  72. @Resource
  73. private DanAssessmentResultMapper danAssessmentResultMapper;
  74. }