| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.exam.common.api.CommonPage; |
| | | import com.gkhy.exam.common.config.MinioConfig; |
| | | import com.gkhy.exam.common.constant.UserConstant; |
| | | import com.gkhy.exam.common.domain.entity.SysUser; |
| | | import com.gkhy.exam.common.enums.PrivatizeEnum; |
| | | import com.gkhy.exam.common.enums.ResourceTypeEnum; |
| | | 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.ExResource; |
| | | import com.gkhy.exam.system.domain.vo.UploadObjectVO; |
| | | import com.gkhy.exam.system.mapper.ExResourceMapper; |
| | | import com.gkhy.exam.system.service.ExResourceService; |
| | | import com.gkhy.exam.system.service.SysCommonService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | public class ExResourceServiceImpl extends ServiceImpl<ExResourceMapper, ExResource> implements ExResourceService { |
| | | @Autowired |
| | | private SysCommonService commonService; |
| | | |
| | | @Autowired |
| | | private MinioConfig minioConfig; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public CommonPage selectResourseList(ExResource resource) { |
| | | SysUser currentUser = SecurityUtils.getLoginUser().getUser(); |
| | |
| | | } |
| | | PageUtils.startPage(); |
| | | List<ExResource> resourceList=baseMapper.selectResourceList(resource); |
| | | resourceList.forEach(item -> { |
| | | item.setResourcePath(minioConfig.getEndpoint()+minioConfig.getBucketName()+"/"+item.getResourcePath()); |
| | | }); |
| | | return CommonPage.restPage(resourceList); |
| | | } |
| | | |
| | | @Override |
| | | public ExResource selectResourceById(Long resourceId) { |
| | | return baseMapper.selectResourceById(resourceId); |
| | | ExResource resource= baseMapper.selectResourceById(resourceId); |
| | | if(resource==null){ |
| | | return resource; |
| | | } |
| | | resource.setResourcePath(minioConfig.getEndpoint()+minioConfig.getBucketName()+"/"+resource.getResourcePath()); |
| | | if(resource.getPrivatize().equals(PrivatizeEnum.PUBLIC.getCode())){ |
| | | return resource; |
| | | } |
| | | SysUser currentUser=SecurityUtils.getLoginUser().getUser(); |
| | | if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ |
| | | return resource; |
| | | } |
| | | if(!resource.getCompanyId().equals(currentUser.getCompanyId())){ |
| | | throw new ApiException("无权限查看其它企业资源"); |
| | | } |
| | | |
| | | return resource; |
| | | } |
| | | |
| | | @Override |
| | | public ExResource selectResourceByPeriodId(Long periodId) { |
| | | return baseMapper.selectResourceByPeriodId(periodId); |
| | | ExResource resource= baseMapper.selectResourceByPeriodId(periodId); |
| | | if(resource==null){ |
| | | return resource; |
| | | } |
| | | resource.setResourcePath(minioConfig.getEndpoint()+minioConfig.getBucketName()+"/"+resource.getResourcePath()); |
| | | if(resource.getPrivatize().equals(PrivatizeEnum.PUBLIC.getCode())){ |
| | | return resource; |
| | | } |
| | | SysUser currentUser=SecurityUtils.getLoginUser().getUser(); |
| | | if(currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ |
| | | return resource; |
| | | } |
| | | if(!resource.getCompanyId().equals(currentUser.getCompanyId())){ |
| | | throw new ApiException("无权限查看其它企业资源"); |
| | | } |
| | | return resource; |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public int insertResource(ExResource resource) { |
| | | if(!checkNameUnique(resource)){ |
| | | throw new ApiException("资源名称已存在"); |
| | | if(resource.getResourceType().equals(ResourceTypeEnum.VIDEO.getCode())||resource.getResourceType().equals(ResourceTypeEnum.AUDIO.getCode())){ |
| | | if(resource.getResourceLength()==null){ |
| | | throw new ApiException("视频或者音频时长不能为空"); |
| | | } |
| | | }else{ |
| | | if(resource.getDocPage()==null){ |
| | | throw new ApiException("文档页数不能为空"); |
| | | } |
| | | } |
| | | SysUser user=SecurityUtils.getLoginUser().getUser(); |
| | | if(user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ |
| | | resource.setPrivatize(PrivatizeEnum.PUBLIC.getCode()); |
| | | }else{ |
| | | if(user.getCompanyId()==null){ |
| | | throw new ApiException("获取用户公司id失败"); |
| | | } |
| | | resource.setCompanyId(user.getCompanyId()); |
| | | resource.setPrivatize(PrivatizeEnum.PRIVATE.getCode()); |
| | | } |
| | | UploadObjectVO uploadObjectVO =commonService.doUpload(resource.getFile()); |
| | | resource.setResourceUri(uploadObjectVO.getPath()); |
| | | resource.setVideoVid(uploadObjectVO.getFilename()); |
| | | resource.setResourceSize(uploadObjectVO.getSize()); |
| | | checkUserAllowed(resource); |
| | | if(!checkNameUnique(resource)){ |
| | | throw new ApiException("资源名称已存在"); |
| | | } |
| | | resource.setCreateBy(SecurityUtils.getUsername()); |
| | | int row=baseMapper.insert(resource); |
| | | if(row<1){ |
| | | try { |
| | | //删除原文件 |
| | | commonService.removeFile(uploadObjectVO.getPath()); |
| | | }catch (Exception e){ |
| | | log.error("新增资源,删除文件失败="+e.getMessage()); |
| | | } |
| | | throw new ApiException("新增资源失败"); |
| | | } |
| | | return row; |
| | |
| | | |
| | | @Override |
| | | public int updateResource(ExResource resource) { |
| | | if(resource.getResourceType().equals(ResourceTypeEnum.VIDEO.getCode())||resource.getResourceType().equals(ResourceTypeEnum.AUDIO.getCode())){ |
| | | if(resource.getResourceLength()==null){ |
| | | throw new ApiException("视频或者音频时长不能为空"); |
| | | } |
| | | }else{ |
| | | if(resource.getDocPage()==null){ |
| | | throw new ApiException("文档页数不能为空"); |
| | | } |
| | | } |
| | | checkUserAllowed(resource); |
| | | if(!checkNameUnique(resource)){ |
| | | throw new ApiException("资源名称已存在"); |
| | | } |
| | | String resourcePath=resource.getResourcePath(); |
| | | if(resourcePath.startsWith(minioConfig.getEndpoint()+minioConfig.getBucketName()+"/")) { |
| | | resourcePath = resourcePath.replace(minioConfig.getEndpoint()+minioConfig.getBucketName() + "/", ""); |
| | | resource.setResourcePath(resourcePath); |
| | | } |
| | | int row=baseMapper.updateById(resource); |
| | | if(row<1){ |
| | |
| | | return row; |
| | | } |
| | | |
| | | public void checkUserAllowed(ExResource resource) { |
| | | 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(resource.getCompanyId()!=null&&!currentUser.getCompanyId().equals(resource.getCompanyId())){ |
| | | throw new ApiException("没有权限操作其他企业资源"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = RuntimeException.class) |
| | | public int deleteResourceById(Long resourceId) { |
| | | checkUserAllowed(baseMapper.selectById(resourceId)); |
| | | //校验资源是否绑定 |
| | | int count= baseMapper.checkResourceAssign(resourceId); |
| | | if(count>0){ |
| | | throw new ApiException("资源已跟课时关联,不能删除"); |
| | | } |
| | | ExResource resource=getById(resourceId); |
| | | int row=baseMapper.deleteById(resourceId); |
| | | if(row<1){ |
| | | throw new ApiException("删除资源失败"); |
| | | } |
| | | //删除文件 |
| | | commonService.removeFile(resource.getResourceUri()); |
| | | commonService.removeMinioFile(resourceId,resource.getResourcePath()); |
| | | return row; |
| | | } |
| | | |