package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.enums.ApproveStatusEnum; import com.gkhy.exam.common.enums.PrivatizeEnum; import com.gkhy.exam.common.enums.UserTypeEnum; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.ExCourse; import com.gkhy.exam.system.mapper.ExCourseChapterMapper; import com.gkhy.exam.system.mapper.ExCourseMapper; import com.gkhy.exam.system.mapper.ExCoursePhaseMapper; import com.gkhy.exam.system.service.ExCourseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** *

* 课程表 服务实现类 *

* * @author kzy * @since 2024-06-05 15:07:36 */ @Service public class ExCourseServiceImpl extends ServiceImpl implements ExCourseService { @Autowired private ExCourseChapterMapper courseChapterMapper; @Autowired private ExCoursePhaseMapper coursePhaseMapper; @Override public CommonPage selectCourseList(ExCourse course) { SysUser user= SecurityUtils.getLoginUser().getUser(); if(!user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ course.setCompanyId(user.getCompanyId()); } PageUtils.startPage(); List courseList=baseMapper.selectCourseList(course); return CommonPage.restPage(courseList); } @Override public CommonPage selectApproveCourseList(ExCourse course){ course.setState(ApproveStatusEnum.APPROVED.getCode()); return selectCourseList(course); } @Override public ExCourse selectCourseById(Long courseId) { ExCourse course= baseMapper.selectCourseById(courseId); if(course.getPrivatize().equals(PrivatizeEnum.PUBLIC.getCode())){ return course; } SysUser currentUser=SecurityUtils.getLoginUser().getUser(); if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ return course; } if(!course.getCompanyId().equals(currentUser.getCompanyId())){ throw new ApiException("无权限查看其它企业课程"); } return course; } @Override public int insertCourse(ExCourse course) { if(!checkNameUnique(course)){ throw new ApiException("课程名称已存在"); } checkUserAllowed(course); if(SecurityUtils.getLoginUser().getUser().getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ course.setState(ApproveStatusEnum.APPROVED.getCode()); }else{ course.setState(ApproveStatusEnum.APPROVING.getCode()); } int row =baseMapper.insert(course); if(row<1){ throw new ApiException("新增课程失败"); } return row; } @Override public int updateCourse(ExCourse course) { if(!checkNameUnique(course)){ throw new ApiException("课程名称已存在"); } checkUserAllowed(baseMapper.selectById(course.getId())); int row =baseMapper.updateById(course); if(row<1){ throw new ApiException("更新课程失败"); } return row; } public void checkUserAllowed(ExCourse course) { SysUser currentUser= SecurityUtils.getLoginUser().getUser(); if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ return; } if(currentUser.getUserType().equals(UserTypeEnum.STUDENT.getCode())){ throw new ApiException("没有权限操作"); } if(!currentUser.getCompanyId().equals(course.getCompanyId())){ throw new ApiException("没有权限操作其他企业课程"); } if(course.getId()!=null){ if(course.getState().equals(ApproveStatusEnum.APPROVED.getCode())){ throw new ApiException("已审批的课程不能再修改"); } } } @Override public int deleteCourseById(Long courseId) { //校验课程是否被分配/是否存在字章节 checkUserAllowed(baseMapper.selectById(courseId)); Integer phaseCount= coursePhaseMapper.selectCountByCourseId(courseId); if(phaseCount>0){ throw new ApiException("课程已分配,不能删除"); } Integer chapterCount=courseChapterMapper.selectCountByCourseId(courseId); if(chapterCount>0){ throw new ApiException("课程下存在章节,不能删除"); } int row =baseMapper.deleteByCourseId(courseId); if(row<1){ throw new ApiException("删除课程失败"); } return row; } @Override public boolean checkNameUnique(ExCourse course) { Long courseId=course.getId()==null?-1L:course.getId(); ExCourse cou= baseMapper.checkNameUnique(course.getName()); if(cou!=null&&cou.getId().longValue()!=courseId.longValue()){ return UserConstant.NOT_UNIQUE; } return UserConstant.UNIQUE; } @Override public int doApprove(ExCourse course) { ExCourse existCourse=baseMapper.selectById(course.getId()); checkUserAllowed(existCourse); int row=baseMapper.updateById(course); if(row<1){ throw new ApiException("审批失败"); } return row; } }