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;
|
|
/**
|
* <p>
|
* 课程表 服务实现类
|
* </p>
|
*
|
* @author kzy
|
* @since 2024-06-05 15:07:36
|
*/
|
@Service
|
public class ExCourseServiceImpl extends ServiceImpl<ExCourseMapper, ExCourse> 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<ExCourse> 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;
|
}
|
}
|