diff --git a/README.md b/README.md index d4cb028..c4e5528 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ novel-cloud ├── novel-gateway -- 基于Spring Cloud Gateway构建的网关服务 ├── novel-monitor -- 基于Spring Boot Admin构建的监控中心 ├── novel-search -- 基于Elastic Search构建的搜索微服务 +├── novel-file -- 基于阿里云OSS构建的文件微服务 ├── novel-home -- 门户首页微服务 ├── novel-news -- 新闻中心微服务 ├── novel-user -- 用户中心微服务 diff --git a/doc/yml/nacos_config_export_20200602214520.zip b/doc/yml/nacos_config_export_20200603004804.zip similarity index 66% rename from doc/yml/nacos_config_export_20200602214520.zip rename to doc/yml/nacos_config_export_20200603004804.zip index 036063c..db4edce 100644 Binary files a/doc/yml/nacos_config_export_20200602214520.zip and b/doc/yml/nacos_config_export_20200603004804.zip differ diff --git a/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java b/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java index 76e60e9..842cb36 100644 --- a/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java +++ b/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java @@ -70,4 +70,23 @@ public interface BookApi { * */ @GetMapping("api/book/listUserCommentByPage") List listUserCommentByPage(@RequestParam("userId") Long userId,@RequestParam("page") int page, @RequestParam("pageSize") int pageSize); + + /** + * 查询网络图片的小说 + * + * @param localPicPrefix + * @param limit 查询条数 + * @return 返回小说集合 + * */ + @GetMapping("api/book/queryNetworkPicBooks") + List queryNetworkPicBooks(@RequestParam("localPicPrefix") String localPicPrefix,@RequestParam("limit") int limit); + + + /** + * 更新图片路径 + * @param picUrl 图片路径 + * @param bookId 小说ID + */ + @PostMapping("api/book/updateBookPic") + void updateBookPic(@RequestParam("picUrl") String picUrl,@RequestParam("bookId") Long bookId); } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java index 08e18c7..fbd54be 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java @@ -91,4 +91,27 @@ public class BookApi { List listUserCommentByPage(@RequestParam("userId") Long userId,@RequestParam("page") int page, @RequestParam("pageSize") int pageSize){ return bookService.listUserCommentByPage(userId,page,pageSize); } + + /** + * 查询网络图片的小说 + * + * @param localPicPrefix + * @param limit 查询条数 + * @return 返回小说集合 + * */ + @GetMapping("queryNetworkPicBooks") + List queryNetworkPicBooks(@RequestParam("localPicPrefix") String localPicPrefix,@RequestParam("limit") int limit){ + return bookService.queryNetworkPicBooks(localPicPrefix,limit); + } + + /** + * 更新图片路径 + * @param picUrl 图片路径 + * @param bookId 小说ID + */ + @PostMapping("updateBookPic") + void updateBookPic(@RequestParam("picUrl") String picUrl,@RequestParam("bookId") Long bookId){ + bookService.updateBookPic(picUrl,bookId); + } + } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/listener/BookVisitAddListener.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/listener/BookVisitAddListener.java index 7a0fb8a..9a7b1c9 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/listener/BookVisitAddListener.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/listener/BookVisitAddListener.java @@ -15,7 +15,10 @@ import org.springframework.stereotype.Component; /** - * @author 11797 + * 消息监听器 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 */ @Component @Slf4j diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java index 1350e02..6381b92 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java @@ -136,4 +136,21 @@ public interface BookService { * @return 评论数据 * */ List listUserCommentByPage(Long userId, int page, int pageSize); + + /** + * 查询网络图片的小说 + * + * @param localPicPrefix + * @param limit 查询条数 + * @return 返回小说集合 + * */ + List queryNetworkPicBooks(String localPicPrefix, Integer limit); + + + /** + * 更新图片路径 + * @param picUrl 图片路径 + * @param bookId 小说ID + */ + void updateBookPic(String picUrl, Long bookId); } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java index 8efe3e1..2585c0e 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java @@ -30,6 +30,7 @@ import static org.mybatis.dynamic.sql.select.SelectDSL.select; /** * 小说服务接口实现 + * * @author xiongxiaoyang * @version 1.0 * @since 2020/5/28 @@ -63,14 +64,14 @@ public class BookServiceImpl implements BookService { @Override public List queryBookByIds(List ids) { - return bookMapper.selectMany(select(BookDynamicSqlSupport.id,BookDynamicSqlSupport.catId,BookDynamicSqlSupport.catName, - BookDynamicSqlSupport.bookName,BookDynamicSqlSupport.authorName, - BookDynamicSqlSupport.lastIndexId,BookDynamicSqlSupport.lastIndexName,BookDynamicSqlSupport.lastIndexUpdateTime, - BookDynamicSqlSupport.picUrl,BookDynamicSqlSupport.bookDesc,BookDynamicSqlSupport.score) + return bookMapper.selectMany(select(BookDynamicSqlSupport.id, BookDynamicSqlSupport.catId, BookDynamicSqlSupport.catName, + BookDynamicSqlSupport.bookName, BookDynamicSqlSupport.authorName, + BookDynamicSqlSupport.lastIndexId, BookDynamicSqlSupport.lastIndexName, BookDynamicSqlSupport.lastIndexUpdateTime, + BookDynamicSqlSupport.picUrl, BookDynamicSqlSupport.bookDesc, BookDynamicSqlSupport.score) .from(book) - .where(BookDynamicSqlSupport.id,isIn(ids)) - .build() - .render(RenderingStrategies.MYBATIS3) + .where(BookDynamicSqlSupport.id, isIn(ids)) + .build() + .render(RenderingStrategies.MYBATIS3) ); } @@ -104,12 +105,12 @@ public class BookServiceImpl implements BookService { BookDynamicSqlSupport.authorId, BookDynamicSqlSupport.authorName, BookDynamicSqlSupport.picUrl, BookDynamicSqlSupport.bookDesc, BookDynamicSqlSupport.wordCount, BookDynamicSqlSupport.lastIndexUpdateTime) - .from(book) - .where(BookDynamicSqlSupport.wordCount, isGreaterThan(0)) - .orderBy(sortSpecification) - .limit(limit) - .build() - .render(RenderingStrategies.MYBATIS3); + .from(book) + .where(BookDynamicSqlSupport.wordCount, isGreaterThan(0)) + .orderBy(sortSpecification) + .limit(limit) + .build() + .render(RenderingStrategies.MYBATIS3); return bookMapper.selectMany(selectStatement); } @@ -132,12 +133,12 @@ public class BookServiceImpl implements BookService { .build() .render(RenderingStrategies.MYBATIS3); List books = bookMapper.selectMany(selectStatement); - return books.size() >0 ? books.get(0) : null; + return books.size() > 0 ? books.get(0) : null; } @Override public void addVisitCount(Long bookId, int addCount) { - bookMapper.addVisitCount(bookId,addCount); + bookMapper.addVisitCount(bookId, addCount); } @@ -173,12 +174,12 @@ public class BookServiceImpl implements BookService { //分页查询小说评论数据 PageHelper.startPage(page, pageSize); List bookCommentList = bookCommentMapper.selectMany( - select(BookCommentDynamicSqlSupport.id,BookCommentDynamicSqlSupport.bookId, + select(BookCommentDynamicSqlSupport.id, BookCommentDynamicSqlSupport.bookId, BookCommentDynamicSqlSupport.createUserId, - BookCommentDynamicSqlSupport.commentContent,BookCommentDynamicSqlSupport.replyCount, + BookCommentDynamicSqlSupport.commentContent, BookCommentDynamicSqlSupport.replyCount, BookCommentDynamicSqlSupport.createTime) .from(BookCommentDynamicSqlSupport.bookComment) - .where(BookCommentDynamicSqlSupport.bookId,isEqualTo(bookId)) + .where(BookCommentDynamicSqlSupport.bookId, isEqualTo(bookId)) .orderBy(BookCommentDynamicSqlSupport.createTime.descending()) .build() .render(RenderingStrategies.MYBATIS3)); @@ -190,11 +191,11 @@ public class BookServiceImpl implements BookService { //将评论数据和评论人数据关联起来 List resultList = new ArrayList<>(bookCommentList.size()); - for(BookComment bookComment : bookCommentList){ + for (BookComment bookComment : bookCommentList) { BookCommentVO bookCommentVO = new BookCommentVO(); - BeanUtils.copyProperties(bookComment,bookCommentVO); + BeanUtils.copyProperties(bookComment, bookCommentVO); User user = userMap.get(bookComment.getCreateUserId()); - if(user != null){ + if (user != null) { bookCommentVO.setCreateUserName(user.getUsername()); bookCommentVO.setCreateUserPhoto(user.getUserPhoto()); } @@ -260,9 +261,9 @@ public class BookServiceImpl implements BookService { .render(RenderingStrategies.MYBATIS3); List list = bookIndexMapper.selectMany(selectStatement); if (list.size() == 0) { - result.put("preBookIndexId",0L); + result.put("preBookIndexId", 0L); } else { - result.put("preBookIndexId",list.get(0).getId()); + result.put("preBookIndexId", list.get(0).getId()); } selectStatement = select(BookIndexDynamicSqlSupport.id) @@ -275,9 +276,9 @@ public class BookServiceImpl implements BookService { .render(RenderingStrategies.MYBATIS3); list = bookIndexMapper.selectMany(selectStatement); if (list.size() == 0) { - result.put("nextBookIndexId",0L); + result.put("nextBookIndexId", 0L); } else { - result.put("nextBookIndexId",list.get(0).getId()); + result.put("nextBookIndexId", list.get(0).getId()); } @@ -310,14 +311,44 @@ public class BookServiceImpl implements BookService { public List listUserCommentByPage(Long userId, int page, int pageSize) { PageHelper.startPage(page, pageSize); return bookCommentMapper.selectMany( - select(BookCommentDynamicSqlSupport.id,BookCommentDynamicSqlSupport.bookId, + select(BookCommentDynamicSqlSupport.id, BookCommentDynamicSqlSupport.bookId, BookCommentDynamicSqlSupport.createUserId, - BookCommentDynamicSqlSupport.commentContent,BookCommentDynamicSqlSupport.replyCount, + BookCommentDynamicSqlSupport.commentContent, BookCommentDynamicSqlSupport.replyCount, BookCommentDynamicSqlSupport.createTime) .from(BookCommentDynamicSqlSupport.bookComment) - .where(BookCommentDynamicSqlSupport.createUserId,isEqualTo(userId)) + .where(BookCommentDynamicSqlSupport.createUserId, isEqualTo(userId)) .orderBy(BookCommentDynamicSqlSupport.createTime.descending()) .build() .render(RenderingStrategies.MYBATIS3)); } + + @Override + public List queryNetworkPicBooks(String localPicPrefix, Integer limit) { + + + return bookMapper.selectMany( + select(BookDynamicSqlSupport.id, BookDynamicSqlSupport.picUrl) + .from(book) + .where(BookDynamicSqlSupport.picUrl, isLike("http%")) + .and(BookDynamicSqlSupport.picUrl, isNotLike(localPicPrefix)) + .limit(limit) + .build() + .render(RenderingStrategies.MYBATIS3)); + } + + @Override + public void updateBookPic(String picUrl, Long bookId) { + + bookMapper.update(update(book) + .set(BookDynamicSqlSupport.picUrl) + .equalTo(picUrl) + .set(BookDynamicSqlSupport.updateTime) + .equalTo(new Date()) + .where(BookDynamicSqlSupport.id, isEqualTo(bookId)) + .build() + .render(RenderingStrategies.MYBATIS3)); + + } + + } diff --git a/novel-common/src/main/java/com/java2nb/novel/common/config/RabbitConfig.java b/novel-common/src/main/java/com/java2nb/novel/common/config/RabbitConfig.java index d66decd..5acb1a9 100644 --- a/novel-common/src/main/java/com/java2nb/novel/common/config/RabbitConfig.java +++ b/novel-common/src/main/java/com/java2nb/novel/common/config/RabbitConfig.java @@ -9,7 +9,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * @author 11797 + * rabbitmq配置类 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 */ @Configuration @ConditionalOnProperty(prefix = "spring.rabbitmq", name = "host", matchIfMissing = false) diff --git a/novel-common/src/main/java/com/java2nb/novel/common/utils/FileUtil.java b/novel-common/src/main/java/com/java2nb/novel/common/utils/FileUtil.java index a0a57d3..091adec 100644 --- a/novel-common/src/main/java/com/java2nb/novel/common/utils/FileUtil.java +++ b/novel-common/src/main/java/com/java2nb/novel/common/utils/FileUtil.java @@ -9,6 +9,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; +import javax.imageio.ImageIO; import java.io.*; import java.util.Date; import java.util.Objects; @@ -23,23 +24,20 @@ import java.util.Objects; public class FileUtil { /** - * 网络图片转本地 + * 网络图片转临时文件 * */ - public static String network2Local(String picSrc,String picSavePath,String visitPrefix) { + public static File networkPic2Temp(String picSrc) { + File picFile = null; InputStream input = null; OutputStream out = null; try { - //本地图片保存 HttpHeaders headers = new HttpHeaders(); HttpEntity requestEntity = new HttpEntity<>(null, headers); ResponseEntity resEntity = RestTemplateUtil.getInstance(Charsets.ISO_8859_1.name()).exchange(picSrc, HttpMethod.GET, requestEntity, Resource.class); input = Objects.requireNonNull(resEntity.getBody()).getInputStream(); - Date currentDate = new Date(); - picSrc = visitPrefix + DateUtils.formatDate(currentDate, "yyyy") + "/" + DateUtils.formatDate(currentDate, "MM") + "/" + DateUtils.formatDate(currentDate, "dd") + "/" - + UUIDUtil.getUUID32() - + picSrc.substring(picSrc.lastIndexOf(".")); - File picFile = new File(picSavePath + picSrc); + picFile = File.createTempFile("temp",picSrc.substring(picSrc.lastIndexOf("."))); File parentFile = picFile.getParentFile(); + if (!parentFile.exists()) { parentFile.mkdirs(); } @@ -49,10 +47,15 @@ public class FileUtil { out.write(b, 0, n); } + out.flush(); + if( ImageIO.read(picFile) == null){ + return null; + } + }catch (Exception e){ log.error(e.getMessage(),e); - picSrc = "/images/default.gif"; + return null; }finally { if(input != null){ try { @@ -69,11 +72,15 @@ public class FileUtil { } } } + if(picFile != null) { + //程序退出时删除临时文件 + picFile.deleteOnExit(); + } } - return picSrc; + return picFile; } diff --git a/novel-file/pom.xml b/novel-file/pom.xml new file mode 100644 index 0000000..0ae59af --- /dev/null +++ b/novel-file/pom.xml @@ -0,0 +1,82 @@ + + + + novel-cloud + com.java2nb.novel + 1.0.0 + + 4.0.0 + + novel-file + + + + com.java2nb.novel + book-api + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + + + mysql + mysql-connector-java + + + org.mybatis.dynamic-sql + mybatis-dynamic-sql + + + + + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-config + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-netflix-hystrix + + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun-sdk-oss.version} + + + commons-fileupload + commons-fileupload + ${commons-fileupload.version} + + + + + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + \ No newline at end of file diff --git a/novel-file/src/main/java/com/java2nb/novel/FileApplication.java b/novel-file/src/main/java/com/java2nb/novel/FileApplication.java new file mode 100644 index 0000000..30f3404 --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/FileApplication.java @@ -0,0 +1,22 @@ +package com.java2nb.novel; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * 文件微服务启动器 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 + */ +@SpringBootApplication +@EnableFeignClients +@EnableScheduling +public class FileApplication { + + public static void main(String[] args) { + SpringApplication.run(FileApplication.class); + } +} diff --git a/novel-file/src/main/java/com/java2nb/novel/config/OssProperties.java b/novel-file/src/main/java/com/java2nb/novel/config/OssProperties.java new file mode 100644 index 0000000..024ddbc --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/config/OssProperties.java @@ -0,0 +1,32 @@ +package com.java2nb.novel.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * OSS配置 + * + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 + */ +@Data +@Component +@ConfigurationProperties(prefix="novel.file") +public class OssProperties { + + private String endpoint; + + private String keyId; + + private String keySecret; + + private String fileHost; + + private String bucketName; + + private String webUrl; + + +} diff --git a/novel-file/src/main/java/com/java2nb/novel/feign/BookFeignClient.java b/novel-file/src/main/java/com/java2nb/novel/feign/BookFeignClient.java new file mode 100644 index 0000000..169aeb3 --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/feign/BookFeignClient.java @@ -0,0 +1,17 @@ +package com.java2nb.novel.feign; + + +import com.java2nb.novel.book.api.BookApi; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * 小说服务Feign客户端 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/5/28 + */ +@FeignClient(value = "book-service") +public interface BookFeignClient extends BookApi { + + +} diff --git a/novel-file/src/main/java/com/java2nb/novel/schedule/CrawlPicTransSchedule.java b/novel-file/src/main/java/com/java2nb/novel/schedule/CrawlPicTransSchedule.java new file mode 100644 index 0000000..04f79e2 --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/schedule/CrawlPicTransSchedule.java @@ -0,0 +1,77 @@ +package com.java2nb.novel.schedule; + +import com.java2nb.novel.book.entity.Book; +import com.java2nb.novel.common.utils.Constants; +import com.java2nb.novel.common.utils.FileUtil; +import com.java2nb.novel.feign.BookFeignClient; +import com.java2nb.novel.service.FileService; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; + + +/** + * 将爬取的网络图片转存到OSS任务 + * + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class CrawlPicTransSchedule { + + private final BookFeignClient bookFeignClient; + + private final RedissonClient redissonClient; + + private final FileService fileService; + + + /** + * 10分钟转一次 + */ + @Scheduled(fixedRate = 1000 * 60 * 10) + @SneakyThrows + public void trans() { + + RLock lock = redissonClient.getLock("crawlPicTrans"); + lock.lock(); + + try { + + List networkPicBooks = bookFeignClient.queryNetworkPicBooks(Constants.LOCAL_PIC_PREFIX, 100); + for (Book book : networkPicBooks) { + + String filePath = "/images/default.gif"; + File file = FileUtil.networkPic2Temp(book.getPicUrl()); + if (file != null) { + + filePath = fileService.uploadFile(file); + + + } + + + bookFeignClient.updateBookPic(filePath, book.getId()); + //3秒钟转化一张图片,10分钟转化200张 + Thread.sleep(3000); + } + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + lock.unlock(); + + + } +} diff --git a/novel-file/src/main/java/com/java2nb/novel/service/FileService.java b/novel-file/src/main/java/com/java2nb/novel/service/FileService.java new file mode 100644 index 0000000..bb73808 --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/service/FileService.java @@ -0,0 +1,21 @@ +package com.java2nb.novel.service; + + +import java.io.File; + +/** + * 文件服务接口 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 + */ +public interface FileService { + + /** + * 上传文件 + * @param file 上传文件 + * @return 上传地址 + * */ + String uploadFile(File file); + +} diff --git a/novel-file/src/main/java/com/java2nb/novel/service/impl/FileServiceImpl.java b/novel-file/src/main/java/com/java2nb/novel/service/impl/FileServiceImpl.java new file mode 100644 index 0000000..00c8435 --- /dev/null +++ b/novel-file/src/main/java/com/java2nb/novel/service/impl/FileServiceImpl.java @@ -0,0 +1,70 @@ +package com.java2nb.novel.service.impl; + +import com.aliyun.oss.OSSClient; +import com.aliyun.oss.model.CannedAccessControlList; +import com.aliyun.oss.model.CreateBucketRequest; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; +import com.java2nb.novel.common.utils.Constants; +import com.java2nb.novel.common.utils.FileUtil; +import com.java2nb.novel.common.utils.UUIDUtil; +import com.java2nb.novel.config.OssProperties; +import com.java2nb.novel.service.FileService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Service; + +import java.io.File; + +/** + * 文件服务接口实现类 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class FileServiceImpl implements FileService { + + private final OssProperties ossProperties; + + @Override + public String uploadFile(File file) { + + String fileName = file.getName(); + String filePath = + Constants.LOCAL_PIC_PREFIX + UUIDUtil.getUUID32() + fileName.substring(fileName.lastIndexOf(".")); + + filePath = filePath.replaceFirst("/",""); + + OSSClient ossClient = new OSSClient(ossProperties.getEndpoint(), ossProperties.getKeyId(), ossProperties.getKeySecret()); + try { + //容器不存在,就创建 + if (!ossClient.doesBucketExist(ossProperties.getBucketName())) { + ossClient.createBucket(ossProperties.getBucketName()); + CreateBucketRequest createBucketRequest = new CreateBucketRequest(ossProperties.getBucketName()); + createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); + ossClient.createBucket(createBucketRequest); + } + //上传文件 + PutObjectResult result = ossClient.putObject(new PutObjectRequest(ossProperties.getBucketName(), filePath, file)); + //设置权限 这里是公开读 + ossClient.setBucketAcl(ossProperties.getBucketName(), CannedAccessControlList.PublicRead); + + if(result != null) { + return ossProperties.getWebUrl() + "/" + filePath; + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } finally { + //关闭 + ossClient.shutdown(); + } + + return "/images/default.gif"; + } + + +} diff --git a/novel-file/src/main/resources/application.yml b/novel-file/src/main/resources/application.yml new file mode 100644 index 0000000..26ec507 --- /dev/null +++ b/novel-file/src/main/resources/application.yml @@ -0,0 +1,4 @@ +spring: + profiles: + include: [common] + diff --git a/novel-file/src/main/resources/bootstrap.yml b/novel-file/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..28edfed --- /dev/null +++ b/novel-file/src/main/resources/bootstrap.yml @@ -0,0 +1,13 @@ +spring: + application: + name: novel-file + profiles: + active: dev + + cloud: + nacos: + config: + ext‐config[0]: + data‐id: novel-redis.yml + group: novel-common + refresh: true \ No newline at end of file diff --git a/novel-file/src/main/resources/logback-boot.xml b/novel-file/src/main/resources/logback-boot.xml new file mode 100644 index 0000000..13d435a --- /dev/null +++ b/novel-file/src/main/resources/logback-boot.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + + UTF-8 + + + + + + + + + logs/novel-file.log + + + + + + logs/debug.%d.%i.log + + 30 + + + 10MB + + + + + + %d %p (%file:%line\)- %m%n + + + UTF-8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/novel-search/src/main/java/com/java2nb/novel/search/listener/BookVisitAddListener.java b/novel-search/src/main/java/com/java2nb/novel/search/listener/BookVisitAddListener.java index e7b6136..d952397 100644 --- a/novel-search/src/main/java/com/java2nb/novel/search/listener/BookVisitAddListener.java +++ b/novel-search/src/main/java/com/java2nb/novel/search/listener/BookVisitAddListener.java @@ -16,7 +16,10 @@ import org.springframework.stereotype.Component; /** - * @author 11797 + * 消息监听器 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/6/2 */ @Component @Slf4j diff --git a/novel-search/src/main/java/com/java2nb/novel/search/service/SearchService.java b/novel-search/src/main/java/com/java2nb/novel/search/service/SearchService.java index 7aaf3ff..9d73d2f 100644 --- a/novel-search/src/main/java/com/java2nb/novel/search/service/SearchService.java +++ b/novel-search/src/main/java/com/java2nb/novel/search/service/SearchService.java @@ -1,7 +1,6 @@ package com.java2nb.novel.search.service; -import com.github.pagehelper.PageInfo; import com.java2nb.novel.book.entity.Book; import com.java2nb.novel.common.bean.PageBean; import com.java2nb.novel.search.vo.EsBookVO; diff --git a/pom.xml b/pom.xml index 3cde299..f6e3228 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,7 @@ novel-pay novel-search novel-author + novel-file pom diff --git a/temp/localPic/2020/06/02/4e9ae3c8fe054aefaff9f2f8d5488695.jpg b/temp/localPic/2020/06/02/4e9ae3c8fe054aefaff9f2f8d5488695.jpg new file mode 100644 index 0000000..32c2299 Binary files /dev/null and b/temp/localPic/2020/06/02/4e9ae3c8fe054aefaff9f2f8d5488695.jpg differ