From 0dc1206a0747378e51a297bb25bd79eca1f13e07 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 5 May 2023 14:19:01 +0800 Subject: [PATCH] =?UTF-8?q?//=E4=B8=8B=E8=BD=BD=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UserMouldVideoController.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java b/suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java index e9259e9..6a2e45e 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/UserMouldVideoController.java @@ -8,9 +8,11 @@ import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.sm.MouldPatch; import com.iformall.domain.po.sm.MouldPatchSign; import com.iformall.domain.po.sm.UserMouldVideo; +import com.iformall.domain.vo.WxCouponOrderBVo; import com.iformall.enums.EnumMouldSendType; import com.iformall.enums.EnumVideoStatus; import com.iformall.enums.EnumaMouldPatchStatus; +import com.iformall.exception.MallinkException; import com.iformall.service.sm.MouldPatchService; import com.iformall.service.sm.MouldPatchSignService; import com.iformall.service.sm.UserMouldVideoService; @@ -20,12 +22,18 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; @@ -198,4 +206,55 @@ public class UserMouldVideoController extends BaseController { } } + + @SneakyThrows + @GetMapping("exportVideo") + public void exportVideo(Long id, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] UserMouldVideoController::exportVideo"); + + response.reset(); + OutputStream outputStream = null; + try { + outputStream = response.getOutputStream(); + } catch (IOException e) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR); + } + try{ + if(id == null){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + UserMouldVideo mouldVideo = userMouldVideoService.getById(id); + + if(mouldVideo == null || !mouldVideo.getUserId().equals(getMemberId())){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到用户数据"); + } + if(!EnumVideoStatus.upload_success.getCode().equals(mouldVideo.getVideoStatus())){ + throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"视频未生成成功"); + } + + //获取响应的输出流 + InputStream inputStream = new URL(mouldVideo.getVideoPlayUrl()).openStream(); + response.setHeader("Content-Disposition", "attachment; filename="+mouldVideo.getTitle() ); + //解决编码问题 + response.setHeader("Content-Type","application/octet-stream"); + + byte[] cache = new byte[1024 * 300]; + int flag; + while ((flag = inputStream.read(cache))!=-1){ + outputStream.write(cache, 0, flag); + } + + }catch(MallinkException e){ + ResultData resultData = new ResultData(e.getErrorCode(), e.getMessage()); + //解决编码问题 + response.setHeader("Content-Type","application/json"); + outputStream.write(JSONObject.toJSONString(resultData).getBytes(StandardCharsets.UTF_8)); + + }finally { + outputStream.flush(); + outputStream.close(); + } + } + + }