From f0f00e9ba8a755e4317e029d73b69a92ad9f9df1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期六, 14 九月 2024 17:02:41 +0800 Subject: [PATCH] update --- exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java | 163 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 149 insertions(+), 14 deletions(-) diff --git a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java index 67ca293..15d920a 100644 --- a/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java +++ b/exam-system/src/main/java/com/gkhy/exam/system/service/impl/ExStudentServiceImpl.java @@ -12,16 +12,24 @@ import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.RedisUtils; import com.gkhy.exam.common.utils.SecurityUtils; +import com.gkhy.exam.common.utils.StringUtils; +import com.gkhy.exam.system.domain.ExPaperStudent; +import com.gkhy.exam.system.domain.ExPhaseStudent; import com.gkhy.exam.system.domain.ExStudent; import com.gkhy.exam.system.domain.SysCompany; +import com.gkhy.exam.system.domain.vo.TrainRecordVO; +import com.gkhy.exam.system.mapper.ExPaperStudentMapper; +import com.gkhy.exam.system.mapper.ExPhaseStudentMapper; import com.gkhy.exam.system.mapper.ExStudentMapper; +import com.gkhy.exam.system.mapper.SysUserMapper; import com.gkhy.exam.system.service.ExStudentService; import com.gkhy.exam.system.service.SysCompanyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * <p> @@ -37,12 +45,34 @@ private SysCompanyService companyService; @Autowired private RedisUtils redisUtils; + @Autowired + private ExPhaseStudentMapper phaseStudentMapper; + @Autowired + private ExPaperStudentMapper paperStudentMapper; + @Autowired + private SysUserMapper userMapper; @Override public CommonPage selectStudentList(ExStudent student) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ student.setCompanyId(currentUser.getCompanyId()); + Map<String,Object> paramsMap=new HashMap<>(); + if(currentUser.getUserType().equals(UserTypeEnum.DEPART_USER.getCode())) {//部门级用户 + List<Long> workshopUserIds=userMapper.selectWorkshopUserIds(currentUser.getId()); + if(workshopUserIds==null){ + workshopUserIds=new ArrayList<>(); + } + workshopUserIds.add(currentUser.getId()); + paramsMap.put("createIds",workshopUserIds); + student.setParams(paramsMap); + }else if(currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())){//车间级用户 + List<Long> workshopUserIds=new ArrayList<>(); + workshopUserIds.add(currentUser.getId()); + workshopUserIds.add(currentUser.getParentId()); + paramsMap.put("createIds",workshopUserIds); + student.setParams(paramsMap); + } } PageUtils.startPage(); List<ExStudent> studentList=baseMapper.selectStudentList(student); @@ -73,6 +103,10 @@ SysUser currentUser=SecurityUtils.getLoginUser().getUser(); if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ return student; + }else if (currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){ + if(!Objects.equals(studentId, currentUser.getId())){ + throw new ApiException("无权查看其它学员信息"); + } } if(!student.getCompanyId().equals(currentUser.getCompanyId())){ throw new ApiException("无权限查看其它企业学员"); @@ -84,6 +118,7 @@ @Override public int insertStudent(ExStudent student) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); + student.setCompanyId(currentUser.getCompanyId()); checkUserAllowed(student); if(!checkPhoneUnique(student)){ throw new ApiException("手机号已存在"); @@ -91,7 +126,19 @@ if(!checkIdNoUnique(student)){ throw new ApiException("身份证号已存在"); } - student.setCreateId(currentUser.getId()); + if(currentUser.getUserType().equals(UserTypeEnum.COMPANY_USER.getCode())){ + if(student.getCreateId()==null){ + throw new ApiException("部门id为空"); + } + }else if(currentUser.getUserType().equals(UserTypeEnum.DEPART_USER.getCode())){ + student.setCreateId(currentUser.getId()); + }else{//当前用户为车间级用户 + if(currentUser.getParentId()==null){ + throw new ApiException("当前用户部门id为空"); + } + student.setCreateId(currentUser.getParentId()); + } + student.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(student.getPassword()))); int row=baseMapper.insert(student); if(row<0){ throw new ApiException("新增学员失败"); @@ -109,6 +156,7 @@ throw new ApiException("身份证号已存在"); } ExStudent existStudent=checkUserDataScope(student.getId()); + student.setPassword(null); int row=baseMapper.updateById(student); if(row<0){ throw new ApiException("更新学员失败"); @@ -150,13 +198,30 @@ } @Override - public ExStudent checkIdNoUnique(String idNo) { - ExStudent stu= baseMapper.checkIdNoUnique(idNo); - if(stu!=null){ - SysCompany company=companyService.selectCompanyById(stu.getCompanyId()); - stu.setCompany(company); + public Map checkIdNoUnique(String idNo) { + if(StringUtils.isBlank(idNo)){ + throw new ApiException("身份证号不能为空"); } - return stu; + SysUser currentUser=SecurityUtils.getLoginUser().getUser(); + ExStudent stu= baseMapper.checkIdNoUnique(idNo); + Map<String,Object> resMap=new HashMap<>(); + Integer status=0;//默认不存在 + if(stu!=null){ + status=1; //存在,且同一个公司 + resMap.put("studentId",stu.getId()); + resMap.put("studentName",stu.getName()); + if(stu.getCompanyId()!=currentUser.getCompanyId()){ + status=2; //存在,不同公司 + SysCompany company=companyService.selectCompanyById(stu.getCompanyId()); + if(company==null){ + throw new ApiException("学员公司不存在"); + } + resMap.put("companyId",company.getId()); + resMap.put("companyName",company.getName()); + } + } + resMap.put("status",status); + return resMap; } @Override @@ -167,6 +232,62 @@ su.setUpdateBy(SecurityUtils.getUsername()); delCacheByPhone(existStudent.getPhone()); return updateById(su); + } + + @Override + public void changeStudentCompany(Map<String, Long> bodyMap) { + Long studentId=bodyMap.get("studentId"); + Long companyId=bodyMap.get("companyId"); + if(studentId==null||companyId==null){ + throw new ApiException("学员id或者公司id不能为空"); + } + ExStudent student = baseMapper.selectById(studentId); + if(student==null){ + throw new ApiException("学员不存在"); + } + SysCompany company=companyService.selectCompanyById(companyId); + if(company==null){ + throw new ApiException("公司不存在"); + } + ExStudent stu=new ExStudent().setId(studentId).setCompanyId(companyId); + stu.setUpdateBy(SecurityUtils.getUsername()); + baseMapper.updateById(stu); + } + + @Override + public List<TrainRecordVO> trainRecord(Long studentId) { + List<TrainRecordVO> trainRecordVOList=new ArrayList<>(); + //查询培训记录 + List<ExPhaseStudent> phaseStudentList=phaseStudentMapper.selectPhaseStudentByStudentId(studentId); + if(phaseStudentList.size()>0){ + trainRecordVOList.addAll(phaseStudentList.stream().map(item -> { + TrainRecordVO trainRecordVO=new TrainRecordVO(); + trainRecordVO.setStudentId(item.getStudentId()); + trainRecordVO.setTrainType(1); + trainRecordVO.setName(item.getPhaseName()); + trainRecordVO.setCreateTime(item.getCreateTime()); + trainRecordVO.setCompanyId(item.getCompanyId()); + trainRecordVO.setCompanyName(item.getCompanyName()); + return trainRecordVO; + }).collect(Collectors.toList())); + } + //查询考试记录 + List<ExPaperStudent> paperStudentList=paperStudentMapper.selectByStudentId(studentId); + if(paperStudentList.size()>0){ + trainRecordVOList.addAll(paperStudentList.stream().map(item -> { + TrainRecordVO trainRecordVO=new TrainRecordVO(); + trainRecordVO.setStudentId(item.getStudentId()); + trainRecordVO.setTrainType(2); + trainRecordVO.setName(item.getExamPaper().getName()); + trainRecordVO.setCreateTime(item.getCreateTime()); + trainRecordVO.setCompanyId(item.getCompanyId()); + trainRecordVO.setCompanyName(item.getCompanyName()); + return trainRecordVO; + }).collect(Collectors.toList())); + } + //排序 + trainRecordVOList=trainRecordVOList.stream().sorted(Comparator.comparing(TrainRecordVO::getCreateTime)).collect(Collectors.toList());; + return trainRecordVOList; } public ExStudent checkUserDataScope(Long studentId) { @@ -183,13 +304,27 @@ public void checkUserAllowed(ExStudent student) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); - if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ - throw new ApiException("系统管理员没有权限操作"); + if(student.getId()!=null){ + if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ + return; + } + if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode()) ){ + if(!Objects.equals(currentUser.getId(), student.getId())){ + throw new ApiException("没有权限操作"); + }else{ + return; + } + } + }else{ + if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ + throw new ApiException("系统管理员没有权限操作"); + } + if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){ + throw new ApiException("没有权限操作"); + } } - if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){ - throw new ApiException("没有权限操作"); - } - if(!currentUser.getCompanyId().equals(student.getCompanyId())){ + + if(student.getCompanyId()!=null&&!currentUser.getCompanyId().equals(student.getCompanyId())){ throw new ApiException("没有权限操作其他企业学员"); } } -- Gitblit v1.9.2