diff --git a/src/main/java/com/lion/lionwebsite/Configuration/CustomBean.java b/src/main/java/com/lion/lionwebsite/Configuration/CustomBean.java index e814892..f7f1882 100644 --- a/src/main/java/com/lion/lionwebsite/Configuration/CustomBean.java +++ b/src/main/java/com/lion/lionwebsite/Configuration/CustomBean.java @@ -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 diff --git a/src/main/java/com/lion/lionwebsite/Dao/cache/PageNameCacheMapper.java b/src/main/java/com/lion/lionwebsite/Dao/cache/PageNameCacheMapper.java deleted file mode 100644 index 2ce95ad..0000000 --- a/src/main/java/com/lion/lionwebsite/Dao/cache/PageNameCacheMapper.java +++ /dev/null @@ -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); -} diff --git a/src/main/java/com/lion/lionwebsite/Message/AbstractMessage.java b/src/main/java/com/lion/lionwebsite/Message/AbstractMessage.java index 5c70cf3..51add32 100644 --- a/src/main/java/com/lion/lionwebsite/Message/AbstractMessage.java +++ b/src/main/java/com/lion/lionwebsite/Message/AbstractMessage.java @@ -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; diff --git a/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java b/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java index d371f2c..6ff2a1a 100644 --- a/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java +++ b/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java @@ -39,10 +39,8 @@ public class MessageCodec extends ByteToMessageCodec { 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; diff --git a/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java b/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java index 863e223..fd65a39 100644 --- a/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java +++ b/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java @@ -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 gid2name_cache = new HashMap<>(); - - Map gid2page_cache = new HashMap<>(); - - Map 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)); diff --git a/src/main/java/com/lion/lionwebsite/Service/RemoteService.java b/src/main/java/com/lion/lionwebsite/Service/RemoteService.java index d1e305f..13d7e13 100644 --- a/src/main/java/com/lion/lionwebsite/Service/RemoteService.java +++ b/src/main/java/com/lion/lionwebsite/Service/RemoteService.java @@ -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 downloadPromise = new DefaultPromise<>(eventLoopGroup); - DefaultPromise 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 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 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 diff --git a/src/main/resources/LionWebsite.db b/src/main/resources/LionWebsite.db index b3fcba9..61bd9de 100644 Binary files a/src/main/resources/LionWebsite.db and b/src/main/resources/LionWebsite.db differ diff --git a/src/main/resources/cache.db b/src/main/resources/cache.db index 3a8e444..bac758c 100644 Binary files a/src/main/resources/cache.db and b/src/main/resources/cache.db differ