123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package com.fdkankan.scene.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.constant.UploadFilePath;
- import com.fdkankan.common.exception.BusinessException;
- import com.fdkankan.common.user.SSOLoginHelper;
- import com.fdkankan.common.user.SSOUser;
- import com.fdkankan.common.util.BASE64DecodedMultipartFile;
- import com.fdkankan.common.util.FileUtil;
- import com.fdkankan.fyun.oss.UploadToOssUtil;
- import com.fdkankan.scene.entity.SceneUpload;
- import com.fdkankan.scene.mapper.ISceneUploadMapper;
- import com.fdkankan.scene.service.ISceneUploadService;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.UUID;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author
- * @since 2022-01-19
- */
- @Service
- public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, SceneUpload> implements ISceneUploadService {
- @Resource
- UploadToOssUtil uploadToOssUtil;
- @Value("${oss.point:http://oss-cn-shenzhen-internal.aliyuncs.com}")
- private String point;
- @Value("${oss.key:LTAIUrvuHqj8pvry}")
- private String key;
- @Value("${oss.secrey:JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4}")
- private String secrey;
- @Value("${oss.bucket:4dkankan}")
- private String bucket;
- @Autowired
- private SSOLoginHelper ssoLoginHelper;
- @Override
- public String uploads(String imgData,String fileName,String blzType,MultipartFile[] files,String sceneCode,Integer type,String token) throws Exception{
- SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
- // if(ssoUser == null ){
- // throw new BusinessException(ErrorCode.USER_NOT_LOGIN);
- // }
- Long userId = ssoUser == null ? null :ssoUser.getId();
- List<MultipartFile> multipartFiles = new ArrayList<>();
- if(StringUtils.isNotBlank(imgData)){
- MultipartFile file = BASE64DecodedMultipartFile.base64ToMultipart(imgData);
- multipartFiles.add(file);
- }
- if(files !=null && files.length >0){
- multipartFiles.addAll(Arrays.asList(files));
- }
- return this.uploadFiles(fileName,blzType,multipartFiles,sceneCode,type,userId);
- }
- public String uploadFiles(String sendFileName,String blzType,List<MultipartFile> files, String sceneCode, Integer type,Long userId) throws Exception{
- if (StringUtils.isEmpty(sceneCode) || files == null || files.size() <= 0 || StringUtils.isEmpty(blzType)) {
- throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
- }
- List<String> urlList = new ArrayList<>();
- if(type != null && 1 == type){
- this.updateFileByPreFix(sceneCode,blzType);
- }
- for (MultipartFile file : files) {
- String fileName = file.getOriginalFilename();
- // 获取文件后缀
- String prefix = fileName.substring(fileName.lastIndexOf("."));
- File newFile = File.createTempFile(UUID.randomUUID().toString() ,prefix);
- file.transferTo(newFile);
- String realFileName = fileName;
- if(files.size() ==1 && StringUtils.isNotBlank(sendFileName)){
- realFileName = sendFileName ;
- }
- String ossPath = String.format(UploadFilePath.USER_EDIT_PATH ,sceneCode) + realFileName;
- try {
- uploadToOssUtil.upload2(newFile.getPath(),ossPath);
- }catch (Exception e){
- log.error(ossPath+"上传文件失败"+e);
- throw new BusinessException(-1,"上传文件失败");
- }
- //String url =String.format("http://%s.%s/%s", bucket, point.replace("http://",""), ossPath);
- urlList.add(realFileName);
- FileUtil.delFile(newFile.getPath());
- //添加记录
- this.saveData(sceneCode,ossPath,blzType,userId);
- }
- StringBuilder returnString = new StringBuilder();
- for (String res : urlList) {
- if(StringUtils.isNotBlank(returnString)){
- returnString.append(",");
- }
- returnString.append(res);
- }
- return returnString.toString();
- }
- private void updateFileByPreFix(String sceneCode, String blzType) {
- LambdaQueryWrapper<SceneUpload> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SceneUpload::getNum,sceneCode)
- .eq(SceneUpload::getBizType,blzType)
- .eq(SceneUpload::getTbStatus,0);
- List<SceneUpload> list = this.list(queryWrapper);
- if(list != null && list.size() >0){
- for (SceneUpload sceneUpload : list) {
- try {
- uploadToOssUtil.delete(sceneUpload.getFilePath());
- this.removeEntity(sceneUpload);
- }catch (Exception e){
- log.error(sceneUpload.getFilePath()+"删除oss文件失败",e);
- }
- }
- }
- }
- private void removeEntity(SceneUpload sceneUpload) {
- sceneUpload.setTbStatus(1);
- this.updateById(sceneUpload);
- }
- private void saveData(String sceneCode, String ossPath, String bizType,Long userId) {
- SceneUpload sceneUpload = new SceneUpload();
- sceneUpload.setNum(sceneCode);
- sceneUpload.setFilePath(ossPath);
- sceneUpload.setBizType(bizType);
- sceneUpload.setUploadUser(userId);
- this.save(sceneUpload);
- }
- }
|