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.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.ExCourseChapter; import com.gkhy.exam.system.mapper.ExCourseChapterMapper; import com.gkhy.exam.system.mapper.ExCourseChapterPeriodMapper; import com.gkhy.exam.system.mapper.ExCourseMapper; import com.gkhy.exam.system.service.ExCourseChapterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** *

* 课程章节表 服务实现类 *

* * @author kzy * @since 2024-06-05 15:07:36 */ @Service public class ExCourseChapterServiceImpl extends ServiceImpl implements ExCourseChapterService { @Autowired private ExCourseChapterPeriodMapper courseChapterPeriodMapper; @Autowired private ExCourseMapper courseMapper; @Override public CommonPage selectChapterList(ExCourseChapter chapter) { if(chapter.getCourseId()==null){ throw new ApiException("课程id不能为空"); } PageUtils.startPage(); List chapterList=baseMapper.selectChapterList(chapter); return CommonPage.restPage(chapterList); } @Override public ExCourseChapter selectChapterById(Long chapterId) { return baseMapper.selectChapterById(chapterId); } @Override @Transactional(rollbackFor = RuntimeException.class) public int insertChapter(ExCourseChapter chapter) { checkUserAllowed(chapter); if(!checkNameUnique(chapter)){ throw new ApiException("章节名称已存在"); } SysUser user= SecurityUtils.getLoginUser().getUser(); Long companyId=!user.getUserType().equals(UserTypeEnum.SYSTEM_USER)?user.getCompanyId():null; chapter.setCompanyId(companyId); int row=baseMapper.insert(chapter); if(row<1){ throw new ApiException("新增章节失败"); } return row; } @Override @Transactional(rollbackFor = RuntimeException.class) public int updateChapter(ExCourseChapter chapter) { checkUserAllowed(chapter); if(!checkNameUnique(chapter)){ throw new ApiException("章节名称已存在"); } SysUser user= SecurityUtils.getLoginUser().getUser(); int row=baseMapper.updateById(chapter); if(row<1){ throw new ApiException("更新章节失败"); } return row; } @Override @Transactional(rollbackFor = RuntimeException.class) public int deleteChapterById(Long chapterId) { //校验课程是否已被分配 ,章节下面是否存在课时 checkUserAllowed(baseMapper.selectChapterById(chapterId)); int periodCount=baseMapper.selectPeriodCountById(chapterId); if(periodCount>0){ throw new ApiException("章节下已绑定课时,不能删除"); } int row=baseMapper.deleteById(chapterId); if(row<1){ throw new ApiException("删除章节失败"); } courseChapterPeriodMapper.deletePeriodByChapterId(chapterId); return row; } @Override public boolean checkNameUnique(ExCourseChapter chapter) { if(chapter.getCourseId()==null){ throw new ApiException("课程id不能为空"); } Long chapterId=chapter.getId()==null?-1L:chapter.getId(); ExCourseChapter cc= baseMapper.checkNameUnique(chapter.getName(),chapter.getCourseId()); if(cc!=null&&cc.getId().longValue()!=chapterId.longValue()){ return UserConstant.NOT_UNIQUE; } return UserConstant.UNIQUE; } @Override public List selectChapterByCourseId(Long courseId) { return baseMapper.selectChapterByCourseId(courseId); } public void checkUserAllowed(ExCourseChapter courseChapter) { 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(courseChapter.getCompanyId())){ throw new ApiException("没有权限操作其他企业课程"); } int state=courseMapper.selectCourseState(courseChapter.getCourseId()); if(state==ApproveStatusEnum.APPROVED.getCode()){ throw new ApiException("已审批的课程不能再修改"); } } }