Bladeren bron

首页缓存

zhijiezhao 3 maanden geleden
bovenliggende
commit
5062d54ca2

+ 14 - 0
src/main/java/com/caimei365/manager/service/RedisService.java

@@ -7,6 +7,7 @@ import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -19,6 +20,7 @@ import java.util.concurrent.TimeUnit;
 public class RedisService {
     @Resource
     private RedisTemplate<Serializable, Object> redisTemplate;
+
     /**
      * 读取缓存
      */
@@ -26,12 +28,14 @@ public class RedisService {
         ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
         return operations.get(key);
     }
+
     /**
      * 判断缓存中是否存在
      */
     public boolean exists(String key) {
         return StringUtils.hasLength(key) && Boolean.TRUE.equals(redisTemplate.hasKey(key));
     }
+
     /**
      * 删除缓存
      */
@@ -40,6 +44,7 @@ public class RedisService {
             redisTemplate.delete(key);
         }
     }
+
     /**
      * 写入缓存
      */
@@ -54,6 +59,7 @@ public class RedisService {
         }
         return result;
     }
+
     /**
      * 写入缓存 并 加上过期时间(毫秒)
      */
@@ -69,6 +75,7 @@ public class RedisService {
         }
         return result;
     }
+
     /**
      * 写入过期时间(毫秒)
      */
@@ -82,4 +89,11 @@ public class RedisService {
         }
         return result;
     }
+
+    public void removePattern(String s) {
+        Set<Serializable> keys = redisTemplate.keys(s);
+        if (keys.size() > 0) {
+            redisTemplate.delete(keys);
+        }
+    }
 }

+ 33 - 2
src/main/java/com/caimei365/manager/service/caimei/page/impl/NewPageZoneServiceImpl.java

@@ -8,13 +8,16 @@ import com.caimei365.manager.entity.caimei.page.NewPageTopAdvertisementImage;
 import com.caimei365.manager.entity.caimei.page.NewPageZone;
 import com.caimei365.manager.entity.caimei.page.NewPageZoneImage;
 import com.caimei365.manager.entity.caimei.product.Product;
+import com.caimei365.manager.service.RedisService;
 import com.caimei365.manager.service.caimei.page.NewPageZoneService;
+import com.caimei365.manager.utils.GenerateUtils;
 import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -22,6 +25,8 @@ import java.util.List;
 @Service
 public class NewPageZoneServiceImpl implements NewPageZoneService {
 
+    @Resource
+    private RedisService redisService;
     @Autowired
     private NewPageZoneDao zoneDao;
 
@@ -43,7 +48,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         } else {
             zoneDao.updateZone(pageZone);
         }
-        // 修改
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -53,6 +58,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         zoneDao.delZone(id);
         zoneDao.delProducts(id);
         zoneDao.delImages(id);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -60,6 +66,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateEnabledStatus(Integer id, Integer status, Integer type) {
         zoneDao.updateEnabledStatus(id, status, type);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -67,6 +74,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateSort(Integer id, Integer sort) {
         zoneDao.updateSort(id, sort);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -91,6 +99,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
             list.add(Integer.parseInt(ids));
         }
         zoneDao.delZoneProduct(id, list);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -107,6 +116,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
             list.add(Integer.parseInt(ids));
         }
         zoneDao.addZoneProduct(id, list);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -114,6 +124,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateProductSort(Integer id, Integer productId, Integer sort) {
         zoneDao.updateProductSort(id, productId, sort);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -134,7 +145,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         } else {
             zoneDao.updateZoneImage(pageZoneImage);
         }
-        // 修改
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -142,6 +153,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson delZoneImage(Integer imageId) {
         zoneDao.delImageById(imageId);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -149,6 +161,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateImageSort(Integer imageId, Integer sort) {
         zoneDao.updateImageSort(imageId, sort);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -156,6 +169,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateImageStatus(Integer imageId, Integer status, Integer type) {
         zoneDao.updateImageStatus(imageId, status, type);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -185,6 +199,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
             list.add(Integer.parseInt(ids));
         }
         zoneDao.addRecommendProduct(list);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -201,6 +216,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
             list.add(Integer.parseInt(ids));
         }
         zoneDao.recommendDel(list);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -208,6 +224,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson recommendSort(Integer productId, Integer sort) {
         zoneDao.recommendSort(productId, sort);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -227,6 +244,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         } else {
             zoneDao.updateAdvertisement(image);
         }
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -234,6 +252,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson advertisementSort(Integer id, Integer sort) {
         zoneDao.advertisementSort(id, sort);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -241,6 +260,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson advertisementDel(Integer id) {
         zoneDao.advertisementDel(id);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -252,6 +272,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         return ResponseJson.success(page);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ResponseJson saveTopAdvertisement(NewPageTopAdvertisementImage image) {
         if (null == image.getId()) {
@@ -259,6 +280,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
         } else {
             zoneDao.updateTopAdvertisement(image);
         }
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -266,6 +288,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson topAdvertisementDel(Integer id) {
         zoneDao.delTopAdvertisement(id);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -273,6 +296,7 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     @Override
     public ResponseJson updateTopStatus(Integer id, Integer status, Integer type) {
         zoneDao.updateTopStatus(id, status, type);
+        cleanRedisCache();
         return ResponseJson.success();
     }
 
@@ -285,4 +309,11 @@ public class NewPageZoneServiceImpl implements NewPageZoneService {
     public ResponseJson<NewPageTopAdvertisementImage> topAdvertisementForm(Integer id) {
         return ResponseJson.success(zoneDao.getTopAdvertisementForm(id));
     }
+
+    public void cleanRedisCache() {
+        //首页缓存
+        redisService.removePattern("getHomeCommodityData*");
+        // 重新生成静态首页
+        GenerateUtils.generateHome();
+    }
 }

+ 129 - 0
src/main/java/com/caimei365/manager/utils/GenerateUtils.java

@@ -0,0 +1,129 @@
+package com.caimei365.manager.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+
+
+@Slf4j
+@Component
+public class GenerateUtils {
+
+
+    private static String wwwServer;
+
+    @Value("${caimei.wwwDomain}")
+    public void setWwwServer(String wwwServer) {
+        GenerateUtils.wwwServer = wwwServer;
+    }
+    /**
+     * 生成www静态首页
+     */
+    public static void generateHome(){
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
+            String uri = wwwServer + "/generate/home";
+            // 发起Post请求
+            String result = restTemplate.postForObject(uri, paramMap, String.class);
+            log.info("生成www静态首页:" + result);
+        }  catch (Exception e) {
+            log.info("生成www静态首页失败!");
+            log.error(e.toString(), e);
+        }
+    }
+
+    /**
+     * 生成www静态产品仪器页面
+     * @param pageId 页面Id
+     */
+    public void generateProductType(Integer pageId){
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
+            String uri = wwwServer + "/generate/product/type?pageId="+pageId;
+            // 发起Post请求
+            String result = restTemplate.postForObject(uri, paramMap, String.class);
+            log.info("生成www静态产品仪器页面:" + result);
+        }  catch (Exception e) {
+            log.info("生成www静态产品仪器页面失败!");
+            log.error(e.toString(), e);
+        }
+    }
+
+    /**
+     * 生成www静态采美百科产品仪器页面
+     */
+    public void generateBaikePage(Integer commodityType){
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
+            String uri = wwwServer + "/generate/baike/page?commodityType="+commodityType;
+            // 发起Post请求
+            String result = restTemplate.postForObject(uri, paramMap, String.class);
+            log.info("生成采美百科静态产品仪器页面:" + result);
+        }  catch (Exception e) {
+            log.info("生成采美百科静态产品仪器页面失败!");
+            log.error(e.toString(), e);
+        }
+    }
+
+    /**
+     * 百度链接实时推送
+     */
+    public void pushBaiduLink(String param) {
+        String result = "";
+        PrintWriter out = null;
+        BufferedReader in = null;
+        try {
+            //建立URL之间的连接
+            URLConnection conn = new URL("http://data.zz.baidu.com/urls?site=https://www.caimei365.com&token=hgKJrx3lqsPPCf73").openConnection();
+            // 设置通用的请求属性
+            conn.setRequestProperty("User-Agent", "curl/7.12.1");
+            conn.setRequestProperty("Host", "data.zz.baidu.com");
+            conn.setRequestProperty("Content-Type", "text/plain");
+            conn.setRequestProperty("Content-Length", "83");
+            //发送POST请求必须设置如下两行
+            conn.setDoInput(true);
+            conn.setDoOutput(true);
+            //获取conn对应的输出流
+            out = new PrintWriter(conn.getOutputStream());
+            //发送请求参数
+            out.print(param.trim());
+            //进行输出流的缓冲
+            out.flush();
+            //通过BufferedReader输入流来读取Url的响应
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            String line;
+            while((line=in.readLine()) != null){
+                result += line;
+            }
+        } catch (Exception e) {
+            log.info("百度链接实时推送出现异常!" + e);
+        } finally {
+            try{
+                if(out != null) {
+                    out.close();
+                }
+                if(in != null) {
+                    in.close();
+                }
+            } catch(IOException ex) {
+                ex.printStackTrace();
+                log.info("百度链接实时推送关闭连接异常!" + ex);
+            }
+        }
+        log.info("百度链接实时推送:"+result);
+    }
+
+}

+ 1 - 1
src/main/resources/config/beta/application-beta.yml

@@ -44,7 +44,7 @@ logging:
 
 # 服务域名
 caimei:
-  wwwDomain: https://www-b.caimei365.com
+  wwwDomain: http://120.79.25.27:8009
   coreDomain: https://core-b.caimei365.com
   imageDomain: https://img-b.caimei365.com
 

+ 1 - 1
src/main/resources/config/dev/application-dev.yml

@@ -44,7 +44,7 @@ logging:
 
 # 服务域名
 caimei:
-  wwwDomain: https://www-b.caimei365.com
+  wwwDomain: http://120.79.25.27:8009
   coreDomain: https://core-b.caimei365.com
   imageDomain: https://img-b.caimei365.com