去除远程图片查询相关代码
This commit is contained in:
parent
97c1e91f44
commit
793ae12348
@ -20,7 +20,7 @@ import com.pengrad.telegrambot.model.User;
|
||||
SendResponse.class, Message.class, com.pengrad.telegrambot.model.User.class,
|
||||
Chat.class, MessageEntity.class,
|
||||
AbstractMethodError.class, DeleteGalleryMessage.class, DownloadPostMessage.class, DownloadStatusMessage.class,
|
||||
GalleryPageQueryMessage.class, GalleryRequestMessage.class, IdentityMessage.class, MaintainMessage.class, ResponseMessage.class})
|
||||
IdentityMessage.class, MaintainMessage.class, ResponseMessage.class})
|
||||
public class CustomBean {
|
||||
|
||||
@Bean
|
||||
|
||||
@ -1,22 +0,0 @@
|
||||
package com.lion.lionwebsite.Dao.cache;
|
||||
|
||||
import com.lion.lionwebsite.Domain.PageNameCache;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
|
||||
@Mapper
|
||||
public interface PageNameCacheMapper {
|
||||
|
||||
@Insert("insert into pageName (gid, page, pageName) values (#{gid}, #{page}, #{pageName})")
|
||||
void insertPageNameCache(PageNameCache pageNameCache);
|
||||
|
||||
|
||||
@Select("select pageName from pageName where gid=#{gid} and page=#{page}")
|
||||
String selectPageName(@Param("gid") int gid, @Param("page") short page);
|
||||
|
||||
|
||||
@Delete("delete from pageName where gid=#{gid}")
|
||||
void deletePageNameByGid(int gid);
|
||||
|
||||
// @Delete("delete from pageName where gid=#{gid} and page=#{page}")
|
||||
// void deletePageName(PageNameCache pageNameCache);
|
||||
}
|
||||
@ -13,13 +13,9 @@ public class AbstractMessage {
|
||||
|
||||
public static final byte RESPONSE_MESSAGE = 0;
|
||||
|
||||
public static final byte GALLERY_PAGE_QUERY_MESSAGE = 5;
|
||||
|
||||
public static final byte IDENTITY_MESSAGE = 6;
|
||||
|
||||
public static final byte MAINTAIN_MESSAGE = 7;
|
||||
|
||||
public static final byte GALLERY_REQUEST_MESSAGE = 101;
|
||||
public byte messageType;
|
||||
|
||||
public int messageId;
|
||||
|
||||
@ -39,10 +39,8 @@ public class MessageCodec extends ByteToMessageCodec<AbstractMessage> {
|
||||
AbstractMessage abstractMessage = switch (messageType){
|
||||
case AbstractMessage.DOWNLOAD_POST_MESSAGE -> objectMapper.readValue(metadata, DownloadPostMessage.class);
|
||||
case AbstractMessage.DOWNLOAD_STATUS_MESSAGE -> objectMapper.readValue(metadata, DownloadStatusMessage.class);
|
||||
case AbstractMessage.GALLERY_REQUEST_MESSAGE -> objectMapper.readValue(metadata, GalleryRequestMessage.class);
|
||||
case AbstractMessage.RESPONSE_MESSAGE -> objectMapper.readValue(metadata, ResponseMessage.class);
|
||||
case AbstractMessage.DELETE_GALLERY_MESSAGE -> objectMapper.readValue(metadata, DeleteGalleryMessage.class);
|
||||
case AbstractMessage.GALLERY_PAGE_QUERY_MESSAGE -> objectMapper.readValue(metadata, GalleryPageQueryMessage.class);
|
||||
case AbstractMessage.IDENTITY_MESSAGE -> objectMapper.readValue(metadata, IdentityMessage.class);
|
||||
case AbstractMessage.MAINTAIN_MESSAGE -> objectMapper.readValue(metadata, MaintainMessage.class);
|
||||
default -> null;
|
||||
|
||||
@ -2,7 +2,6 @@ package com.lion.lionwebsite.Service;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.lion.lionwebsite.Dao.cache.ImageCacheMapper;
|
||||
import com.lion.lionwebsite.Dao.cache.PageNameCacheMapper;
|
||||
import com.lion.lionwebsite.Dao.normal.*;
|
||||
import com.lion.lionwebsite.Domain.*;
|
||||
import com.lion.lionwebsite.Exception.ResolutionNotMatchException;
|
||||
@ -25,7 +24,6 @@ import java.io.*;
|
||||
import java.net.URI;
|
||||
import java.util.*;
|
||||
|
||||
import static com.lion.lionwebsite.Util.CustomUtil.fourZeroFour;
|
||||
import static com.lion.lionwebsite.Util.CustomUtil.objectMapper;
|
||||
import static com.lion.lionwebsite.Util.GalleryUtil.*;
|
||||
|
||||
@ -36,12 +34,6 @@ public class GalleryManageService {
|
||||
String TargetPath = "/root/gallery/";
|
||||
String cachePath = "/root/galleryCache/";
|
||||
|
||||
Map<Integer, String> gid2name_cache = new HashMap<>();
|
||||
|
||||
Map<Integer, Integer> gid2page_cache = new HashMap<>();
|
||||
|
||||
Map<String, String> page2pageNameCache = new HashMap<>();
|
||||
|
||||
GalleryMapper galleryMapper;
|
||||
|
||||
CollectMapper collectMapper;
|
||||
@ -54,8 +46,6 @@ public class GalleryManageService {
|
||||
|
||||
TagMapper tagMapper;
|
||||
|
||||
PageNameCacheMapper pageNameCacheMapper;
|
||||
|
||||
ImageCacheMapper imageCacheMapper;
|
||||
|
||||
RemoteService remoteService;
|
||||
@ -63,14 +53,13 @@ public class GalleryManageService {
|
||||
PushService pushService;
|
||||
|
||||
public GalleryManageService(GalleryMapper galleryMapper, CollectMapper collectMapper, CustomConfigurationMapper configurationMapper, UserMapper userMapper, ShareFileMapper shareFileMapper,
|
||||
TagMapper tagMapper, PageNameCacheMapper pageNameCacheMapper, RemoteService remoteService, PushService pushService, ImageCacheMapper imageCacheMapper) {
|
||||
TagMapper tagMapper, RemoteService remoteService, PushService pushService, ImageCacheMapper imageCacheMapper) {
|
||||
this.galleryMapper = galleryMapper;
|
||||
this.collectMapper = collectMapper;
|
||||
this.configurationMapper = configurationMapper;
|
||||
this.userMapper = userMapper;
|
||||
this.shareFileMapper = shareFileMapper;
|
||||
this.tagMapper = tagMapper;
|
||||
this.pageNameCacheMapper = pageNameCacheMapper;
|
||||
this.remoteService = remoteService;
|
||||
this.pushService = pushService;
|
||||
this.imageCacheMapper = imageCacheMapper;
|
||||
@ -350,9 +339,6 @@ public class GalleryManageService {
|
||||
tagMapper.decrTagUsage(tid);
|
||||
|
||||
tagMapper.disMarkTagByGid(gallery.getGid()); //删除本子标记
|
||||
gid2name_cache.remove(gallery.getGid()); //删除本子缓存
|
||||
page2pageNameCache.remove(gallery.getName()); //移除页数缓存
|
||||
pageNameCacheMapper.deletePageNameByGid(gid);
|
||||
|
||||
if (new File(TargetPath + "/" + gallery.getName()).isDirectory()) //删除本地缓存
|
||||
FileUtil.del(TargetPath + "/" + gallery.getName());
|
||||
@ -384,63 +370,6 @@ public class GalleryManageService {
|
||||
return response.toJSONString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线图片
|
||||
* @param gid gid
|
||||
* @param page 文件名
|
||||
* @param request 请求对象
|
||||
* @param response 响应对象
|
||||
*/
|
||||
public void getOnlineImage(Integer gid, Short page, HttpServletRequest request, HttpServletResponse response){
|
||||
String name;
|
||||
|
||||
//本子名缓存
|
||||
if((name = gid2name_cache.get(gid)) == null) //内存
|
||||
if((name = galleryMapper.selectGalleryNameByGid(gid)) == null) { //数据库
|
||||
fourZeroFour(response);
|
||||
return;
|
||||
}
|
||||
else
|
||||
gid2name_cache.put(gid, name);
|
||||
|
||||
//页数缓存
|
||||
Integer real_page;
|
||||
if((real_page = gid2page_cache.get(gid)) == null)
|
||||
real_page = galleryMapper.selectGalleryByGid(gid).getPages();
|
||||
|
||||
//判断页数是否超出
|
||||
if(real_page < page || page < 0){
|
||||
fourZeroFour(response);
|
||||
return;
|
||||
}
|
||||
|
||||
//页名缓存
|
||||
String pageName;
|
||||
if((pageName = page2pageNameCache.get(gid + String.valueOf(page))) == null) //内存
|
||||
if((pageName = pageNameCacheMapper.selectPageName(gid, page)) == null) //数据库
|
||||
if ((pageName = remoteService.queryPageName(name, page)) == null) { //远程查询
|
||||
fourZeroFour(response);
|
||||
return;
|
||||
}
|
||||
//插入数据库
|
||||
else
|
||||
pageNameCacheMapper.insertPageNameCache(new PageNameCache(gid, page, pageName));
|
||||
//插入缓存
|
||||
else
|
||||
page2pageNameCache.put(gid + String.valueOf(page), pageName);
|
||||
|
||||
|
||||
//图片缓存
|
||||
File file = new File(TargetPath, name + "/" + pageName);
|
||||
if(!file.exists()) //硬盘
|
||||
if(remoteService.cachePreview(name, page, file) != 0) { //远程
|
||||
fourZeroFour(response);
|
||||
return;
|
||||
}
|
||||
|
||||
FileDownload.export(request, response, file.getAbsolutePath());
|
||||
}
|
||||
|
||||
public String cacheImagesKey(String url) {
|
||||
Response response = Response.generateResponse();
|
||||
String gid = String.valueOf(GalleryUtil.parseGid(url));
|
||||
|
||||
@ -148,97 +148,6 @@ public class RemoteService {
|
||||
}
|
||||
}
|
||||
|
||||
public byte cachePreview(String galleryName, short page, File file){
|
||||
File parentFile = file.getParentFile();
|
||||
if(!parentFile.isDirectory())
|
||||
if(parentFile.mkdirs())
|
||||
log.info("创建文件夹{}成功", parentFile.getAbsolutePath());
|
||||
else
|
||||
log.error("创建文件夹{}失败", parentFile.getAbsolutePath());
|
||||
|
||||
GalleryRequestMessage grm = new GalleryRequestMessage();
|
||||
grm.setGalleryName(galleryName);
|
||||
grm.setPage(page);
|
||||
|
||||
grm.setType(GalleryRequestMessage.PREVIEW);
|
||||
grm.messageId = atomicInteger.getAndIncrement();
|
||||
DefaultPromise<Object> downloadPromise = new DefaultPromise<>(eventLoopGroup);
|
||||
DefaultPromise<Object> readyPromise = new DefaultPromise<>(eventLoopGroup);
|
||||
|
||||
downloadThread.submit(() -> {
|
||||
try {
|
||||
short port = CustomUtil._findIdlePort();
|
||||
ServerSocketChannel ssChannel = ServerSocketChannel.open();
|
||||
ssChannel.bind(new InetSocketAddress("0.0.0.0", port));
|
||||
grm.setPort(port);
|
||||
readyPromise.setSuccess("");
|
||||
SocketChannel socketChannel = ssChannel.accept();
|
||||
FileChannel fileChannel = FileChannel.open(file.toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE);
|
||||
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
|
||||
while (socketChannel.read(byteBuffer) != -1){
|
||||
byteBuffer.flip();
|
||||
fileChannel.write(byteBuffer);
|
||||
byteBuffer.clear();
|
||||
}
|
||||
fileChannel.close();
|
||||
socketChannel.close();
|
||||
ssChannel.close();
|
||||
log.info("缓存预览图:" + galleryName + " " + file.getName());
|
||||
downloadPromise.setSuccess("");
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
try{
|
||||
readyPromise.await();
|
||||
channel.writeAndFlush(grm);
|
||||
DefaultPromise<AbstractMessage> promise = new DefaultPromise<>(eventLoopGroup);
|
||||
promiseHashMap.put(grm.messageId, promise);
|
||||
boolean result = promise.await(10, TimeUnit.SECONDS);
|
||||
if(result){
|
||||
ResponseMessage rsm = (ResponseMessage) promise.getNow();
|
||||
if(rsm.getResult() == 0){
|
||||
downloadPromise.await(10, TimeUnit.SECONDS);
|
||||
return (byte) (downloadPromise.isSuccess()?0:1);
|
||||
}else{
|
||||
return rsm.getResult();
|
||||
}
|
||||
}else {
|
||||
return -1;
|
||||
}
|
||||
}catch (InterruptedException e){
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public String queryPageName(String name, int page){
|
||||
GalleryPageQueryMessage gpqm = new GalleryPageQueryMessage();
|
||||
gpqm.setName(name);
|
||||
gpqm.setPage(page);
|
||||
gpqm.messageId = atomicInteger.getAndIncrement();
|
||||
|
||||
channel.writeAndFlush(gpqm);
|
||||
DefaultPromise<AbstractMessage> promise = new DefaultPromise<>(eventLoopGroup);
|
||||
promiseHashMap.put(gpqm.messageId, promise);
|
||||
try{
|
||||
boolean result = promise.await(10, TimeUnit.SECONDS);
|
||||
if(result){
|
||||
gpqm = (GalleryPageQueryMessage) promise.getNow();
|
||||
if(gpqm.getResult() == 0)
|
||||
return gpqm.getPageName();
|
||||
else {
|
||||
log.error("galleryPageQuery error:" + gpqm.getResult());
|
||||
return null;
|
||||
}
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}catch (InterruptedException e){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void monitorFunc(){
|
||||
System.out.println("监听端口: " + (port + 1) + " 等待节点上线");
|
||||
try(ServerSocket socket = new ServerSocket(port + 1)) {
|
||||
@ -285,15 +194,12 @@ public class RemoteService {
|
||||
else if(galleryTask.getProceeding() != 0)
|
||||
gallery.setStatus("下载中");
|
||||
|
||||
|
||||
log.info(gallery.getName() + "下载进度:" + gallery.getProceeding() + "/" + gallery.getPages());
|
||||
galleryMapper.updateGallery(gallery);
|
||||
}
|
||||
}
|
||||
else if(msg instanceof ResponseMessage rsm)
|
||||
promiseHashMap.get(rsm.messageId).setSuccess(rsm);
|
||||
else if(msg instanceof GalleryPageQueryMessage gpqm)
|
||||
promiseHashMap.get(gpqm.messageId).setSuccess(gpqm);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user