Kaynağa Gözat

添加缓存
添加书城Block接口

lijinjin 3 yıl önce
ebeveyn
işleme
4d0fa885a1

+ 160 - 0
bin/boot.sh

@@ -0,0 +1,160 @@
+#!/bin/bash
+#jar包名称初始化,不用手动设置
+APP_NAME=
+# 切换目录
+cd `dirname $0` || exit
+cd ..
+
+#查找jar包
+for item in *.jar; do
+  fileName=$item
+  if [ -f "$fileName" ]; then
+    if [ "${fileName##*.}" = jar ]; then
+      APP_NAME=$fileName
+      break
+    fi
+  fi
+done
+
+if [ ! "$APP_NAME" ]; then
+  echo 未找到jar包
+  exit 1
+fi
+
+STDOUT_FILE=/dev/null
+
+
+# 判断java是否存在
+BITS=$(java -version 2>&1 | grep -i 64-bit)
+if [ -z "$BITS" ]; then
+  echo 未安装JDK8
+  exit 1
+fi
+
+# 解锁更多参数、
+JAVA_OPTS=" -XX:+UnlockExperimentalVMOptions"
+# 内存配置,监视程序,然后根据实际情况进行调整,元空间默认20兆左右
+# -Xms8g -Xmx8g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
+JAVA_OPTS="$JAVA_OPTS -server "
+# 垃圾收集器、设置分层编译、
+JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:+TieredCompilation"
+# 自定义配置文件和lib目录,多个目录用冒号分割
+JAVA_OPTS="$JAVA_OPTS -Dloader.path=config -Djava.io.tmpdir=./ "
+# 服务器模式、兼容IPV4、编码(避免乱码)、禁止代码调用gc、
+JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8  -XX:+DisableExplicitGC"
+# gc 日志
+JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:log/gc.log "
+# OOM日志
+JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/heap_dump"
+
+# java调试
+if [ "$2" = "debug" ]; then
+  JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081 "
+fi
+
+
+# 使用说明,用来提示输入参数
+usage() {
+  echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
+  exit 1
+}
+
+# 检查程序是否在运行
+is_exist() {
+  # 获取PID
+  PID=$(ps -ef | grep ${APP_NAME} | grep -v $0 | grep -v grep | awk '{print $2}')
+  # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
+  if [ -z "${PID}" ]; then
+    # 如果进程不存在返回1
+    return 1
+  else
+    # 进程存在返回0
+    return 0
+  fi
+}
+
+# 定义启动程序函数
+start() {
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo "${APP_NAME} is already running, PID=${PID}"
+  else
+#    nohup java -jar $JAVA_OPTS ${APP_NAME} >>${STDOUT_FILE} 2>&1 &
+    nohup java -jar ${APP_NAME} >>${STDOUT_FILE} 2>&1 &
+    PID=$(echo $!)
+    echo "${APP_NAME} start success, PID=$!"
+  fi
+}
+
+# docker_start 前台运行
+docker_start() {
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo "${APP_NAME} is already running, PID=${PID}"
+  else
+    java -jar $JAVA_OPTS ${APP_NAME} >>${STDOUT_FILE} 2>&1
+    PID=$(echo $!)
+    echo "${APP_NAME} start success, PID=$!"
+  fi
+}
+
+# 停止进程函数
+stop() {
+  is_exist
+  if [ $? -eq "0" ]; then
+    kill -9 "${PID}"
+    # 检测是否停止
+    COUNT=1
+    while [ $COUNT -eq 1 ]; do
+      echo -e ".\c"
+      sleep 1
+      is_exist
+      if [ -z "${PID}" ]; then
+        COUNT=0
+        echo "${APP_NAME} process stop"
+      fi
+    done
+    # 删除临时文件
+    rm -rf ./tomcat.*
+  else
+    echo "There is not the process of ${APP_NAME}"
+  fi
+}
+
+# 重启进程函数
+restart() {
+  stop
+  start
+}
+
+# 查看进程状态
+status() {
+  is_exist
+  if [ $? -eq "0" ]; then
+    echo "${APP_NAME} is running, PID=${PID}"
+  else
+    echo "There is not the process of ${APP_NAME}"
+  fi
+}
+
+case $1 in
+"start")
+  start
+  ;;
+"docker_start")
+  start
+  ;;
+"stop")
+  stop
+  ;;
+"restart")
+  restart
+  ;;
+"status")
+  status
+  ;;
+*)
+  usage
+  ;;
+esac
+exit 0

+ 16 - 0
bin/push_server.sh

@@ -0,0 +1,16 @@
+#mvn clean package -Dmaven.test.skip=true
+
+remote=root@121.41.100.198
+remoteDir=/app/book-server
+
+# 在本地执行的代码,比如上传文件到服务器 scp 本地文件 user@ip:远程目录
+scp book-server/target/*.jar ${remote}:${remoteDir}
+
+# 执行命令
+ssh -o StrictHostKeyChecking=no ${remote} > /dev/null 2>&1 << eeooff
+
+sh /app/book-server/bin/boot.sh restart
+
+exit
+eeooff
+echo ok

+ 5 - 0
book-server/pom.xml

@@ -86,6 +86,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+        </dependency>
         <!--异步日志依赖-->
         <dependency>
             <groupId>com.lmax</groupId>

+ 2 - 0
book-server/src/main/java/com/book/server/Application.java

@@ -2,8 +2,10 @@ package com.book.server;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
 
 @SpringBootApplication
+@EnableCaching
 public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class);

+ 28 - 1
book-server/src/main/java/com/book/server/controller/BookController.java

@@ -3,17 +3,22 @@ package com.book.server.controller;
 import com.book.server.common.entity.PageResult;
 import com.book.server.common.entity.Result;
 import com.book.server.dao.entity.Book;
+import com.book.server.model.VO.BlockRes;
 import com.book.server.model.VO.QueryVO;
 import com.book.server.service.BookService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * 书籍
  */
 @RestController
-@CrossOrigin
 @RequestMapping("/book")
 @Slf4j
 public class BookController extends BaseController {
@@ -43,4 +48,26 @@ public class BookController extends BaseController {
         return bookService.recommendByRead(queryVO);
     }
 
+    /**
+     * 书城block
+     * @param pageId
+     * @return
+     */
+    @GetMapping("/getBlockByPageId")
+    @Cacheable(value = "block",key = "#pageId")
+    public Result<List<BlockRes>> getBlockByPageId(Integer pageId) {
+        List<BlockRes> list =bookService.getBlockByPageId(pageId);
+        return Result.byObject(list);
+    }
+
+    /**
+     * 移除block缓存
+     * @return
+     */
+    @GetMapping("/removeBlockCache")
+    @CacheEvict(value = "block",allEntries = true)
+    public Result removeBlockCache() {
+        return Result.byObject("OK");
+    }
+
 }

+ 19 - 0
book-server/src/main/java/com/book/server/filter/CorsFilter.java

@@ -0,0 +1,19 @@
+package com.book.server.filter;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+@Component
+public class CorsFilter extends WebMvcConfigurationSupport {
+    @Override
+    protected void addCorsMappings(CorsRegistry registry) {
+        System.out.println(123456);
+        registry.addMapping("/**").
+                allowCredentials(true)
+                .allowedHeaders("*")
+                .allowedMethods("*")
+                .allowedOrigins("*");
+        super.addCorsMappings(registry);
+    }
+}

+ 14 - 0
book-server/src/main/java/com/book/server/model/VO/BlockRes.java

@@ -0,0 +1,14 @@
+package com.book.server.model.VO;
+
+import com.book.server.dao.entity.ManageBlockResource;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BlockRes {
+    String name;
+    String secondName;
+    String type;
+    List<ManageBlockResource> resources;
+}

+ 5 - 0
book-server/src/main/java/com/book/server/service/BookService.java

@@ -2,9 +2,14 @@ package com.book.server.service;
 
 import com.book.server.common.entity.PageResult;
 import com.book.server.dao.entity.Book;
+import com.book.server.model.VO.BlockRes;
 import com.book.server.model.VO.QueryVO;
 
+import java.util.List;
+
 public interface BookService {
     PageResult<Book> query(QueryVO queryVO);
     PageResult<Book> recommendByRead(QueryVO queryVO);
+
+    List<BlockRes> getBlockByPageId(Integer pageId);
 }

+ 42 - 0
book-server/src/main/java/com/book/server/service/impl/BookServiceImpl.java

@@ -2,13 +2,21 @@ package com.book.server.service.impl;
 
 import com.book.server.common.entity.PageResult;
 import com.book.server.dao.entity.Book;
+import com.book.server.dao.entity.ManageBlock;
+import com.book.server.dao.entity.ManageBlockResource;
 import com.book.server.dao.entity.example.BookExample;
+import com.book.server.dao.entity.example.ManageBlockExample;
+import com.book.server.dao.entity.example.ManageBlockResourceExample;
 import com.book.server.dao.mapper.BookMapper;
+import com.book.server.dao.mapper.ManageBlockMapper;
+import com.book.server.dao.mapper.ManageBlockResourceMapper;
+import com.book.server.model.VO.BlockRes;
 import com.book.server.model.VO.QueryVO;
 import com.book.server.service.BookService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -16,6 +24,12 @@ public class BookServiceImpl implements BookService {
     @Autowired
     private BookMapper bookMapper;
 
+    @Autowired
+    private ManageBlockMapper manageBlockMapper;
+
+    @Autowired
+    private ManageBlockResourceMapper manageBlockResourceMapper;
+
     @Override
     public PageResult<Book> query(QueryVO queryVO) {
         BookExample example = BookExample.newAndCreateCriteria().example();
@@ -41,4 +55,32 @@ public class BookServiceImpl implements BookService {
         List<Book> books = bookMapper.selectByExample(example);
         return new PageResult<>(queryVO.getPage(), queryVO.getSize(), count, books);
     }
+
+    @Override
+    public List<BlockRes> getBlockByPageId(Integer pageId) {
+        ArrayList<BlockRes> list = new ArrayList<>();
+        // 获取板块
+        ManageBlockExample manageBlockExample = ManageBlockExample.newAndCreateCriteria()
+                .andPageIdEqualTo(pageId)
+                .example();
+        manageBlockExample.orderBy(ManageBlock.Column.weigh.desc());
+        List<ManageBlock> manageBlocks = manageBlockMapper.selectByExample(manageBlockExample);
+
+        // 获取板块内部数据
+        for (ManageBlock manageBlock : manageBlocks) {
+            ManageBlockResourceExample manageBlockResourceExample = ManageBlockResourceExample.newAndCreateCriteria()
+                    .andBlockIdEqualTo(manageBlock.getId())
+                    .example();
+            manageBlockResourceExample.orderBy(ManageBlockResource.Column.weigh.desc());
+            List<ManageBlockResource> manageBlockResources = manageBlockResourceMapper.selectByExample(manageBlockResourceExample);
+            BlockRes blockRes = new BlockRes();
+            blockRes.setName(manageBlock.getName());
+            blockRes.setSecondName(manageBlock.getSecondName());
+            blockRes.setType(manageBlock.getType());
+            blockRes.setResources(manageBlockResources);
+
+            list.add(blockRes);
+        }
+        return list;
+    }
 }