Commit 447e178a authored by shiyu's avatar shiyu

Merge remote-tracking branch 'origin/master'

parents 10b59573 6e3996b5
...@@ -22,4 +22,8 @@ public interface CommConsts { ...@@ -22,4 +22,8 @@ public interface CommConsts {
*/ */
public static final String UPLOAD_PRE_DIRECTORY = "quanku/"; public static final String UPLOAD_PRE_DIRECTORY = "quanku/";
/**
* 上传视频目录
*/
public static final String UPLOAD_PRE_VEDIO_DIRECTORY = "quanku/vedio/";
} }
package com.wwdz.ch.wx.impl; package com.wwdz.ch.wx.impl;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.CommonEnum; import com.wwdz.ch.core.consts.CommonEnum;
import com.wwdz.ch.core.consts.MediaTypeEnum;
import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.db.dao.*; import com.wwdz.ch.db.dao.*;
import com.wwdz.ch.db.domain.*; import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.dto.request.CoinRequestDto; import com.wwdz.ch.db.dto.request.CoinRequestDto;
...@@ -11,6 +15,7 @@ import com.wwdz.ch.wx.entity.vo.AgentTranceResponseVo; ...@@ -11,6 +15,7 @@ import com.wwdz.ch.wx.entity.vo.AgentTranceResponseVo;
import com.wwdz.ch.wx.entity.vo.ItemResponseVo; import com.wwdz.ch.wx.entity.vo.ItemResponseVo;
import com.wwdz.ch.wx.service.ItemService; import com.wwdz.ch.wx.service.ItemService;
import com.wwdz.ch.wx.service.WxLoginService; import com.wwdz.ch.wx.service.WxLoginService;
import com.xxdxxs.utils.CommonUtils;
import com.xxdxxs.utils.DateUtils; import com.xxdxxs.utils.DateUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -20,11 +25,13 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -20,11 +25,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.awt.image.BufferedImage;
import java.io.InputStream; import java.io.*;
import java.io.OutputStream; import java.net.URL;
import java.util.*; import java.util.*;
@Service @Service
...@@ -44,6 +51,8 @@ public class ItemServiceImpl implements ItemService { ...@@ -44,6 +51,8 @@ public class ItemServiceImpl implements ItemService {
private FavoritesDao favoritesDao; private FavoritesDao favoritesDao;
@Autowired @Autowired
private WxLoginService wxLoginService; private WxLoginService wxLoginService;
@Autowired
private QiniuStorage qiniuStorage;
@Override @Override
public Result nameList(ItemRequestDto dto) { public Result nameList(ItemRequestDto dto) {
...@@ -131,7 +140,9 @@ public class ItemServiceImpl implements ItemService { ...@@ -131,7 +140,9 @@ public class ItemServiceImpl implements ItemService {
item.setIsStd(false); item.setIsStd(false);
item.setSort(100); item.setSort(100);
item.setImages(dto.getImages()); item.setImages(dto.getImages());
item.setVedios(dto.getVideos()); if (StringUtils.isNotBlank(dto.getVideos())) {
item.setVedios(getVediosImage(dto.getVideos()));
}
item.setPrice(Long.parseLong(dto.getPrice()) / 100); item.setPrice(Long.parseLong(dto.getPrice()) / 100);
item.setDetail(dto.getDetail()); item.setDetail(dto.getDetail());
Date now = new Date(); Date now = new Date();
...@@ -281,6 +292,9 @@ public class ItemServiceImpl implements ItemService { ...@@ -281,6 +292,9 @@ public class ItemServiceImpl implements ItemService {
item.setName(dto.getName()); item.setName(dto.getName());
item.setCid(dto.getCid()); item.setCid(dto.getCid());
item.setImages(dto.getImages()); item.setImages(dto.getImages());
if (StringUtils.isNotBlank(dto.getVideos())) {
item.setVedios(getVediosImage(dto.getVideos()));
}
item.setVedios(dto.getVideos()); item.setVedios(dto.getVideos());
item.setPrice(Long.parseLong(dto.getPrice()) / 100); item.setPrice(Long.parseLong(dto.getPrice()) / 100);
item.setDetail(dto.getDetail()); item.setDetail(dto.getDetail());
...@@ -356,4 +370,90 @@ public class ItemServiceImpl implements ItemService { ...@@ -356,4 +370,90 @@ public class ItemServiceImpl implements ItemService {
return Result.failed("获取小程序链接失败"); return Result.failed("获取小程序链接失败");
} }
} }
@Override
public Result uploadImage(MultipartFile file) {
try {
InputStream inputStream = file.getInputStream();
BufferedImage bufferedImage = ImageIO.read(inputStream);
String lastKey = ".jpg";
if (StringUtils.isNotBlank(file.getOriginalFilename())) {
lastKey = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
}
String keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight() + lastKey;
InputStream imageStream = bufferedImageToInputStream(bufferedImage, lastKey.substring(1));
qiniuStorage.store(imageStream, file.getSize(), file.getContentType(), keyName);
String urlOfSize = qiniuStorage.generateUrl(keyName);
Map<String, Object> map = new HashMap<>();
map.put("url", urlOfSize);
return Result.success(map);
} catch (Exception e) {
logger.error("图片上传七牛云失败,原因:" + e.getMessage(), e);
return Result.failed("文件上传失败");
}
}
@Override
public Result uploadVedio(MultipartFile file) {
try {
InputStream inputStream = file.getInputStream();
String lastKey = ".mp4";
if (StringUtils.isNotBlank(file.getOriginalFilename())) {
lastKey = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
}
String keyName = CommConsts.UPLOAD_PRE_VEDIO_DIRECTORY + CommonUtils.getUUID() + lastKey;
qiniuStorage.store(inputStream, file.getSize(), file.getContentType(), keyName);
String urlOfSize = qiniuStorage.generateUrl(keyName);
Map<String, Object> map = new HashMap<>();
map.put("url", urlOfSize);
return Result.success(map);
} catch (Exception e) {
logger.error("视频上传七牛云失败,原因:" + e.getMessage(), e);
return Result.failed("文件上传失败");
}
}
private String getVediosImage(String vedios) {
String vedio = "";
String[] images = vedios.split(";");
StringBuffer stringBuffer = new StringBuffer();
Arrays.stream(images).parallel().forEach(image -> {
if (stringBuffer.length() != 0) {
stringBuffer.append(";");
}
try {
String cutImage = MediaUtil.getImageByCutVedio(image);
URL url = new URL(cutImage);
InputStream inputStream = url.openStream();
BufferedImage bufferedImage = ImageIO.read(inputStream);
String keyName = CommConsts.UPLOAD_PRE_DIRECTORY + CommonUtils.getUUID() + "_" + bufferedImage.getWidth() + "x" + bufferedImage.getHeight() + "." + MediaTypeEnum.IMAGE_JPG.getExt();
InputStream imageStream = bufferedImageToInputStream(bufferedImage, MediaTypeEnum.IMAGE_JPG.getExt());
qiniuStorage.store(imageStream, 1, MediaTypeEnum.IMAGE_JPG.getMime(), keyName);
String urlOfSize = qiniuStorage.generateUrl(keyName);
stringBuffer.append(image).append(",").append(urlOfSize);
} catch (Exception e) {
stringBuffer.append(image);
logger.error("视频图片上传失败", e);
}
});
vedio = stringBuffer.toString();
return vedio;
}
/**
* 将BufferedImage转换为InputStream
*
* @param image 数据源
* @param type 图片格式
* @return
*/
private static InputStream bufferedImageToInputStream(BufferedImage image, String type) {
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
ImageIO.write(image, type, os);
return new ByteArrayInputStream(os.toByteArray());
} catch (IOException e) {
logger.error("bufferedImageToInputStream 出错,原因: {}", e);
}
return null;
}
} }
...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service; ...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.wx.entity.request.ItemRequestDto; import com.wwdz.ch.wx.entity.request.ItemRequestDto;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -23,4 +24,7 @@ public interface ItemService { ...@@ -23,4 +24,7 @@ public interface ItemService {
void getWxacode(String page, String scene, HttpServletResponse response); void getWxacode(String page, String scene, HttpServletResponse response);
Result getWxLink(String pageUrl); Result getWxLink(String pageUrl);
Result uploadImage(MultipartFile file);
Result uploadVedio(MultipartFile file);
} }
...@@ -12,11 +12,13 @@ import org.slf4j.Logger; ...@@ -12,11 +12,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects;
@RestController @RestController
@RequestMapping("/wx/item") @RequestMapping("/wx/item")
...@@ -252,4 +254,22 @@ public class WxItemController { ...@@ -252,4 +254,22 @@ public class WxItemController {
public Result getWxLink(String pageUrl) { public Result getWxLink(String pageUrl) {
return itemService.getWxLink(pageUrl); return itemService.getWxLink(pageUrl);
} }
@ApiOperation("图片上传")
@PostMapping(value ="/uploadImage")
public Result uploadImage(@RequestParam("image") MultipartFile file) {
if (Objects.isNull(file) || file.isEmpty()) {
return Result.failed("请上传图片");
}
return itemService.uploadImage(file);
}
@ApiOperation("视频上传")
@PostMapping(value ="/uploadVedio")
public Result uploadVedio(@RequestParam("vedio") MultipartFile file) {
if (Objects.isNull(file) || file.isEmpty()) {
return Result.failed("请上传视频");
}
return itemService.uploadVedio(file);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment