package com.zxyj.service; import com.zxyj.service.api.AssessmentPermissionServiceInterface; import javax.annotation.Resource; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zxyj.entity.DanAssessmentResult; import com.zxyj.entity.User; import com.zxyj.mapper.DanAssessmentResultMapper; import com.zxyj.mapper.UserMapper; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 测评报告权限服务 */ @Service public class AssessmentPermissionService { @Resource private GuideHierarchyService guideHierarchyService; @Resource private UserMapper userMapper; /** * 检查指导师是否有权限查看测评报告 */ public boolean canViewAssessment(Long guideId, Long assessmentId) { DanAssessmentResult assessment = getAssessmentById(assessmentId); if (assessment == null) { return false; } // 检查是否是测评的指导师 if (assessment.getTeacherId().equals(guideId)) { return true; } // 检查是否是下级指导师 return guideHierarchyService.isChildGuide(guideId, assessment.getTeacherId()); } /** * 获取指导师可以查看的测评报告列表 */ public List getAccessibleAssessments(Long guideId) { // 获取所有下级指导师 List childGuides = guideHierarchyService.getAllChildGuides(guideId); if (childGuides.isEmpty()) { return new ArrayList<>(); } // 获取下级指导师的测评报告 List childGuideIds = childGuides.stream() .map(User::getId) .collect(Collectors.toList()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(DanAssessmentResult::getTeacherId, childGuideIds) .eq(DanAssessmentResult::getStatus, "completed") .orderByDesc(DanAssessmentResult::getAssessmentDate); return danAssessmentResultMapper.selectList(wrapper); } /** * 获取指导师自己的测评报告 */ public List getOwnAssessments(Long guideId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DanAssessmentResult::getTeacherId, guideId) .eq(DanAssessmentResult::getStatus, "completed") .orderByDesc(DanAssessmentResult::getAssessmentDate); return danAssessmentResultMapper.selectList(wrapper); } /** * 获取测评报告 */ public DanAssessmentResult getAssessmentById(Long assessmentId) { return danAssessmentResultMapper.selectById(assessmentId); } @Resource private DanAssessmentResultMapper danAssessmentResultMapper; }