Commit 88f442b6 authored by shiyu's avatar shiyu

更新图片url

parent 4acb36d7
......@@ -110,7 +110,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/admin/auth/index", "anon");
filterChainDefinitionMap.put("/admin/auth/403", "anon");
filterChainDefinitionMap.put("/actuator/health", "anon");
// filterChainDefinitionMap.put("/admin/item/syn", "anon");
filterChainDefinitionMap.put("/admin/item/updateUrl", "anon");
// filterChainDefinitionMap.put("/admin/**", "anon");
filterChainDefinitionMap.put("/admin/**", "authc");
......
......@@ -61,8 +61,8 @@ public class ItemController {
return result;
}
// @GetMapping("/syn")
@GetMapping("/updateUrl")
public void syn() {
synCoinJob.execute();
synCoinJob.updateImageUrlOfsSize();
}
}
package com.wwdz.ch.admin.job;
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.MediaTypeEnum;
import com.wwdz.ch.core.storage.QiniuStorage;
import com.wwdz.ch.db.dao.CoinsDao;
import com.wwdz.ch.db.dao.ItemDao;
import com.wwdz.ch.db.domain.Coins;
import com.wwdz.ch.db.domain.Item;
import com.wwdz.ch.db.dto.request.CoinRequestDto;
import com.xxdxxs.utils.CommonUtils;
import com.xxdxxs.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.UUID;
import java.util.stream.IntStream;
@Component
......@@ -25,6 +37,9 @@ public class SynCoinJob {
@Autowired
CoinsDao coinsDao;
@Autowired
QiniuStorage qiniuStorage;
public void execute() {
......@@ -78,7 +93,7 @@ public class SynCoinJob {
public void updateImageUrlOfsSize() {
logger.info(">>>>>>>>>>>>>>>>>>>>>>> 更新item表, 开始执行 <<<<<<<<<<<<<<<<<<<<<");
logger.info(">>>>>>>>>>>>>>>>>>>>>>> 更新商品图片尺寸, 开始执行 <<<<<<<<<<<<<<<<<<<<<");
try {
CoinRequestDto coinRequestDto = new CoinRequestDto();
coinRequestDto.setPage(1);
......@@ -87,41 +102,48 @@ public class SynCoinJob {
int totalPageNum = pageInfo.getPages();
logger.info("total page : {}, total : {}", totalPageNum, pageInfo.getTotal());
IntStream.rangeClosed(1, totalPageNum).parallel().forEach(i -> {
logger.info(">>>>>>>>>>>>>>>>> 当前同步数据的页码: {} 同步开始 <<<<<<<<<<<<<<<<<", i);
logger.info(">>>>>>>>>>>>>>>>> 当前更新数据的页码: {} 更新开始 <<<<<<<<<<<<<<<<<", i);
CoinRequestDto dto = new CoinRequestDto();
dto.setPage(i);
dto.setLimit(100);
List<Coins> coinsList = coinsDao.findList(dto);
coinsList.parallelStream().forEach(coins -> {
Item item = new Item();
item.setId(coins.getId());
item.setName(coins.getName());
item.setCid(coins.getCid());
item.setIsOnSale(false);
item.setIsStd(false);
item.setSort(1);
item.setImages(coins.getImages());
item.setShareImage(null);
item.setTopImage(null);
item.setPrice(coins.getPrice());
item.setDetail(coins.getDetail());
item.setCreateTime(coins.getCreated());
item.setSourceType(CommonEnum.SourceTypeEnum.SYSTEM_GET.getCode());
item.setUpdateTime(coins.getUpdated());
item.setIsDeleted(false);
item.setBidTime("");
item.setRemark(null);
item.setIsSetted(0);
item.setOriginalExtra(coins.getExtra());
item.setOriginalSourceUrl(coins.getSourceUrl());
item.setSource(coins.getSource());
itemDao.insert(item);
PageInfo<Item> pageInfo2 = itemDao.findByPage(coinRequestDto);
List<Item> itemList = pageInfo2.getList();
itemList.parallelStream().forEach(item -> {
String imageUrl = item.getImages();
if (StringUtils.hasLength(imageUrl)) {
String[] images = imageUrl.split(";");
String newImages = "";
for (String image : images) {
if (StringUtils.hasLength(newImages)) {
newImages = newImages + ";";
}
try {
URL url = new URL(image);
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 = url.openStream();
qiniuStorage.store(imageStream, 1, MediaTypeEnum.IMAGE_JPG.getMime(), keyName);
String urlOfSize = qiniuStorage.generateUrl(keyName);
logger.info(">>>>>>>>>>>>> id : {} ; new URL = {}", item.getId(), urlOfSize);
newImages = newImages + urlOfSize;
} catch (Exception e) {
newImages = newImages + image;
logger.error("更新图片 url : {}", e);
}
}
Item updateItem = new Item();
updateItem.setId(item.getId());
updateItem.setImages(newImages);
itemDao.update(updateItem);
}
});
logger.info(">>>>>>>>>>>>>>>>> 同步数据的页码: {}, 同步成功 <<<<<<<<<<<<<<<<<", i);
logger.info(">>>>>>>>>>>>>>>>> 更新商品图片尺寸的页码: {}, 更新成功 <<<<<<<<<<<<<<<<<", i);
});
logger.info(">>>>>>>>>>>>>>>>>>>>>>> 同步coins表数据到item表, 执行完毕 <<<<<<<<<<<<<<<<<<<<<");
logger.info(">>>>>>>>>>>>>>>>>>>>>>> 更新商品图片尺寸, 执行完毕 <<<<<<<<<<<<<<<<<<<<<");
} catch (Exception e) {
logger.error("同步coins表数据到item表 error {}", e);
logger.error("更新商品图片尺寸 error {}", e);
}
}
......
package com.wwdz.ch.core.consts;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
public enum MediaTypeEnum {
// http://www.garykessler.net/library/file_sigs.html
IMAGE_JPG("jpg", "image/jpeg", "FFD8FF"),
IMAGE_GIF("gif", "image/gif", "47494638"),
IMAGE_PNG("png", "image/png", "89504E47"),
IMAGE_WEBP("webp", "image/webp", "52494646"),
OCTET_STREAM("octet", "application/octet-stream", ""),
// http://tools.ietf.org/html/rfc3003
AUDIO_MP3("mp3", "audio/mp3", ""),
AUDIO_AMR("amr", "audio/amr", ""),
AUDIO_AAC("aac", "audio/aac", ""),
AUDIO_WAV("wav", "audio/wav", ""),
AUDIO_FLAC("flac", "audio/flac", ""),
AUDIO_AIFF("aiff", "audio/aiff", ""),
VIDEO_MP4("mp4", "video/mp4", ""),
VIDEO_FLV("flv", "video/x-flv", "464C56"),
VIDEO_MOV("mov", "video/quicktime", "");
@Getter
private final String ext;
@Getter
private final String mime;
@Getter
private final String magic;
MediaTypeEnum(String ext, String mime, String magic) {
this.ext = ext;
this.mime = mime;
this.magic = magic;
}
public static MediaTypeEnum getByExt(String ext) {
if (StringUtils.isEmpty(ext)) {
return null;
}
for (MediaTypeEnum mediaTypeEnum : MediaTypeEnum.values()) {
if (mediaTypeEnum.getExt().equals(ext)) {
return mediaTypeEnum;
}
}
return null;
}
}
......@@ -86,7 +86,6 @@ public class QiniuStorage implements Storage {
String upToken = auth.uploadToken(bucketName);
Response response = uploadManager.put(inputStream, keyName, upToken, null, contentType);
logger.info("七牛存储结果 response:{}" + response);
logger.info("七牛存储结果 response:{}" + JsonUtils.from(response));
logger.info("七牛存储结果:" + response.statusCode);
} catch (QiniuException ex) {
ex.printStackTrace();
......
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