Ver Fonte

首页静态化触发

chao há 4 anos atrás
pai
commit
da5804d58c

+ 9 - 4
src/main/java/com/caimei/modules/cmpage/web/CmImageController.java

@@ -4,6 +4,7 @@ import com.caimei.constants.common.RedisKeyUtil;
 import com.caimei.modules.cmpage.entity.CmImage;
 import com.caimei.modules.cmpage.service.CmImageService;
 import com.caimei.modules.info.entity.Info;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.redis.RedisService;
 import com.google.common.collect.Maps;
 import com.thinkgem.jeesite.common.config.Global;
@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.text.ParseException;
@@ -41,7 +43,8 @@ public class CmImageController extends BaseController {
 
 	@Autowired
 	private CmImageService cmImageService;
-
+    @Resource
+    private GenerateUtils generateUtils;
 	@Autowired
 	private RedisService redisService;
 
@@ -56,7 +59,7 @@ public class CmImageController extends BaseController {
 		}
 		return entity;
 	}
-	
+
 	@RequiresPermissions("cmpage:cmImage:view")
 	@RequestMapping(value = {"list", ""})
 	public String list(CmImage cmImage, HttpServletRequest request, HttpServletResponse response, Model model) {
@@ -184,7 +187,7 @@ public class CmImageController extends BaseController {
 		}
 		return "redirect:"+Global.getAdminPath()+"/cmpage/cmImage?flag="+cmImage.getFlag();
 	}
-	
+
 	@RequiresPermissions("cmpage:cmImage:delete")
 	@RequestMapping(value = "delete")
 	public String delete(CmImage cmImage, RedirectAttributes redirectAttributes) {
@@ -321,6 +324,8 @@ public class CmImageController extends BaseController {
 				redisService.remove(pageImageKey);
 			}
 		}
+        // 重新生成静态首页
+        generateUtils.generateHome();
 	}
 
-}
+}

+ 14 - 1
src/main/java/com/caimei/modules/info/web/InfoController.java

@@ -2,12 +2,14 @@ package com.caimei.modules.info.web;
 
 import java.util.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.caimei.modules.info.entity.CmInfoDocSyn;
 import com.caimei.modules.info.service.CmInfoDocSynService;
 import com.caimei.modules.live.entity.NewPageLive;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.opensearch.SearchUitls;
 import com.caimei.redis.RedisService;
 import org.apache.commons.collections.CollectionUtils;
@@ -52,7 +54,8 @@ public class InfoController extends BaseController {
     private SearchUitls searchUitls;
     @Autowired
 	private RedisService redisService;
-
+    @Resource
+    private GenerateUtils generateUtils;
 	@ModelAttribute
 	public Info get(@RequestParam(required=false) String id) {
 		Info entity = null;
@@ -163,6 +166,8 @@ public class InfoController extends BaseController {
 		if (info.getTopPosition() != null && !StringUtils.equals("", info.getTopPosition())) {
 			//清除置顶,将后面置顶位的数据往前移
 			infoService.moveTopList(info);
+			// 重新生成静态首页
+			generateUtils.generateHome();
 		}
 		addMessage(redirectAttributes, "删除信息成功");
 		// 删除索引
@@ -193,6 +198,12 @@ public class InfoController extends BaseController {
 			for (String id : ids){
 				// 更新索引
 				searchUitls.updateArticleIndex(Integer.valueOf(id));
+				Info info = infoService.get(id);
+				Boolean topFlag = (info.getTopPosition() != null && !StringUtils.equals("", info.getTopPosition())) ? true : false;
+            	if (topFlag) {
+					// 重新生成静态首页
+					generateUtils.generateHome();
+				}
 			}
 		} catch (Exception e) {
 			logger.debug(e.toString(),e);
@@ -236,6 +247,8 @@ public class InfoController extends BaseController {
                 oldInfo.setTopPosition(oldTopPosition);
                 infoService.moveTopList(oldInfo);
             }
+			// 重新生成静态首页
+			generateUtils.generateHome();
 			map.put("success",true);
 		} catch (Exception e) {
 			logger.debug(e.toString(),e);

+ 18 - 2
src/main/java/com/caimei/modules/live/web/NewPageLiveController.java

@@ -1,10 +1,12 @@
 package com.caimei.modules.live.web;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.caimei.constants.common.RedisKeyUtil;
 import com.caimei.modules.live.entity.NewPageLiveAdvertisingImage;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.google.common.collect.Maps;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +39,8 @@ public class NewPageLiveController extends BaseController {
 
 	@Autowired
 	private NewPageLiveService newPageLiveService;
+    @Resource
+    private GenerateUtils generateUtils;
 
 	@ModelAttribute
 	public NewPageLive get(@RequestParam(required=false) String id) {
@@ -49,7 +53,7 @@ public class NewPageLiveController extends BaseController {
 		}
 		return entity;
 	}
-	
+
 	@RequiresPermissions("live:newPageLive:view")
 	@RequestMapping(value = {"list", ""})
 	public String list(NewPageLive newPageLive, HttpServletRequest request, HttpServletResponse response, Model model) {
@@ -77,6 +81,7 @@ public class NewPageLiveController extends BaseController {
             return form(newPageLive, model);
         }
 		newPageLiveService.save(newPageLive);
+		cleanRedisCache();
 		addMessage(redirectAttributes, "保存直播成功");
 		return "redirect:"+Global.getAdminPath()+"/live/newPageLive/?repage";
 	}
@@ -100,6 +105,7 @@ public class NewPageLiveController extends BaseController {
 	@RequestMapping(value = "delete")
 	public String delete(NewPageLive newPageLive, RedirectAttributes redirectAttributes) {
 		newPageLiveService.delete(newPageLive);
+		cleanRedisCache();
         addMessage(redirectAttributes, "删除直播成功");
 		return "redirect:"+Global.getAdminPath()+"/live/newPageLive/?repage";
 	}
@@ -165,6 +171,7 @@ public class NewPageLiveController extends BaseController {
                 newPageLiveService.moveTopList(oldPageLive);
             }
             map.put("success",true);
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(),e);
             map.put("success",false);
@@ -190,8 +197,17 @@ public class NewPageLiveController extends BaseController {
             return advertisingImageForm(model);
         }
         newPageLiveService.saveAdvertisingImage(advertisingImage);
+        cleanRedisCache();
         addMessage(redirectAttributes, "添加成功");
         return "redirect:"+Global.getAdminPath()+"/live/newPageLive/?repage";
     }
 
-}
+    /**
+     * 有数据变动时需要清除缓存
+     */
+    public void cleanRedisCache() {
+        // 重新生成静态首页
+        generateUtils.generateHome();
+    }
+
+}

+ 25 - 0
src/main/java/com/caimei/modules/newhome/web/NewPageFirstNavigationController.java

@@ -197,6 +197,31 @@ public class NewPageFirstNavigationController extends BaseController {
             return map;
         }
     }
+    /**
+     * 生成静态首页
+     */
+    @RequestMapping(value = "updateStaticHome")
+    @ResponseBody
+    public Map<String, Object> updateStaticHome(){
+        Map<String, Object> map = Maps.newLinkedHashMap();
+        try {
+            //首页缓存
+            redisService.removePattern("getNavMenu*");
+            redisService.removePattern("getClassify*");
+            redisService.removePattern("getCommodityClassify*");
+            redisService.removePattern("getHomeData*");
+            redisService.removePattern("getHomeCommodityData*");
+            // 重新生成静态首页
+            generateUtils.generateHome();
+            map.put("success", true);
+            map.put("msg", "手动生成静态首页成功");
+            return map;
+        } catch (Exception e) {
+            map.put("success", false);
+            map.put("msg", "手动生成静态首页失败");
+            return map;
+        }
+    }
 
     /**
      * 有数据变动时需要清除缓存

+ 17 - 9
src/main/java/com/caimei/modules/opensearch/GenerateUtils.java

@@ -1,6 +1,8 @@
 package com.caimei.modules.opensearch;
 
 import com.thinkgem.jeesite.common.config.Global;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -15,16 +17,22 @@ import org.springframework.web.client.RestTemplate;
 @Component
 public class GenerateUtils {
 
+	protected Logger logger = LoggerFactory.getLogger(getClass());
+
     public void generateHome(){
-        // 获取www服务器地址
-        String wwwServer = Global.getConfig("wwwServer");
-        RestTemplate restTemplate = new RestTemplate();
-        MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
-        String uri = wwwServer + "/generate/home";
-        // 发起Post请求
-        String result = restTemplate.postForObject(uri, paramMap, String.class);
-        System.out.println("生成www静态首页:" + result);
+        try {
+            // 获取www服务器地址
+            String wwwServer = Global.getConfig("wwwServer");
+            RestTemplate restTemplate = new RestTemplate();
+            MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
+            String uri = wwwServer + "/generate/home";
+            // 发起Post请求
+            String result = restTemplate.postForObject(uri, paramMap, String.class);
+            logger.info("生成www静态首页:" + result);
+        }  catch (Exception e) {
+            logger.info("生成www静态首页失败!");
+            logger.error(e.toString(), e);
+        }
     }
 
-
 }

+ 23 - 22
src/main/java/com/caimei/modules/product/web/CmBigtypeController.java

@@ -1,12 +1,11 @@
 package com.caimei.modules.product.web;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.caimei.constants.common.RedisKeyUtil;
-import com.caimei.modules.product.entity.BigType;
-import com.caimei.modules.product.entity.CmTinytype;
-import com.caimei.modules.product.entity.Product;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.redis.RedisService;
 import com.caimei.vo.JsonModel;
 import com.google.common.collect.Maps;
@@ -28,9 +27,7 @@ import com.caimei.modules.product.entity.CmBigtype;
 import com.caimei.modules.product.service.CmBigtypeService;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -47,7 +44,8 @@ public class CmBigtypeController extends BaseController {
 
 	@Autowired
 	private RedisService redisService;
-
+    @Resource
+    private GenerateUtils generateUtils;
 	@ModelAttribute
 	public CmBigtype get(@RequestParam(required=false) String id) {
 		CmBigtype entity = null;
@@ -190,22 +188,6 @@ public class CmBigtypeController extends BaseController {
 		addMessage(redirectAttributes, "删除大分类成功");
 		return "redirect:"+Global.getAdminPath()+"/product/cmBigtype/?repage";
 	}
-	/**
-	 * 有数据变动时需要清除缓存
-	 */
-	public void cleanRedisCache() {
-		String productTypeKey = RedisKeyUtil.getProductTypeKey();// 商品分类栏信息缓存
-		String crmProductTypeKey = RedisKeyUtil.getCrmProductTypeKey();// CRM端调用接口产生缓存清理
-		if (redisService.exists(productTypeKey)) {
-			redisService.remove(productTypeKey);//存在变更时清除Redis缓存数据
-		}
-		if (redisService.exists(crmProductTypeKey)) {
-			redisService.remove(crmProductTypeKey);//存在变更时清除Redis缓存数据
-		}
-        //分类缓存
-        String productClassify = "getClassify*";
-        redisService.removePattern(productClassify);
-	}
 
 	/**
 	 * 获取一级分类
@@ -231,5 +213,24 @@ public class CmBigtypeController extends BaseController {
 		cleanRedisCache();
 		return jsonModel.success("批量更新排序成功");
 	}
+	/**
+	 * 有数据变动时需要清除缓存
+	 */
+	public void cleanRedisCache() {
+		String productTypeKey = RedisKeyUtil.getProductTypeKey();// 商品分类栏信息缓存
+		String crmProductTypeKey = RedisKeyUtil.getCrmProductTypeKey();// CRM端调用接口产生缓存清理
+		if (redisService.exists(productTypeKey)) {
+			redisService.remove(productTypeKey);//存在变更时清除Redis缓存数据
+		}
+		if (redisService.exists(crmProductTypeKey)) {
+			redisService.remove(crmProductTypeKey);//存在变更时清除Redis缓存数据
+		}
+        //分类缓存
+        String productClassify = "getClassify*";
+        redisService.removePattern(productClassify);
+		redisService.removePattern("getCommodityClassify*");
+        // 重新生成静态首页
+        generateUtils.generateHome();
+	}
 
 }

+ 6 - 1
src/main/java/com/caimei/modules/product/web/CmSecondHandDetailController.java

@@ -5,6 +5,7 @@ import com.caimei.modules.basesetting.entity.Address;
 import com.caimei.modules.brand.entity.CmBrand;
 import com.caimei.modules.brand.service.CmBrandService;
 import com.caimei.modules.common.utils.UploadUtils;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.product.dao.ProductNewDao;
 import com.caimei.modules.product.entity.BigType;
 import com.caimei.modules.product.entity.CmSecondHandDetail;
@@ -32,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
@@ -63,7 +65,8 @@ public class CmSecondHandDetailController extends BaseController {
     private ProductNewDao productNewDao;
     @Autowired
     private RedisService redisService;
-
+    @Resource
+    private GenerateUtils generateUtils;
     @ModelAttribute
     public CmSecondHandDetail get(@RequestParam(required = false) String id) {
         CmSecondHandDetail entity = null;
@@ -420,5 +423,7 @@ public class CmSecondHandDetailController extends BaseController {
         String homeData = "getHomeData*";
         redisService.removePattern(homeData);
         redisService.removePattern("getHomeCommodityData*");
+        // 重新生成静态首页
+        generateUtils.generateHome();
     }
 }

+ 17 - 1
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -4,6 +4,7 @@ import com.caimei.modules.brand.entity.CmBrand;
 import com.caimei.modules.brand.service.CmBrandService;
 import com.caimei.modules.common.entity.Province;
 import com.caimei.modules.common.service.AreaService;
+import com.caimei.modules.opensearch.GenerateUtils;
 import com.caimei.modules.opensearch.SearchUitls;
 import com.caimei.modules.product.entity.*;
 import com.caimei.modules.product.service.*;
@@ -72,7 +73,8 @@ public class ProductNewController extends BaseController {
     private CmSecondHandDetailService cmSecondHandDetailService;
     @Autowired
     private RedisService redisService;
-
+    @Resource
+    private GenerateUtils generateUtils;
     @ModelAttribute
     public Product get(@RequestParam(required = false) String id) {
         Product entity = null;
@@ -362,6 +364,7 @@ public class ProductNewController extends BaseController {
             map.put("msg", "操作成功");
             // 更新索引
             searchUitls.updateProductIndex(productId);
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -452,6 +455,7 @@ public class ProductNewController extends BaseController {
         }
         try {
             jsonModel = productService.editProductCustomClassification(productId, ids);
+            cleanRedisCache();
         } catch (Exception e) {
             jsonModel.error("数据异常");
         }
@@ -517,6 +521,7 @@ public class ProductNewController extends BaseController {
             productNewService.addProductImage(imgPath, productID, shopID, request);
             map.put("success", true);
             map.put("msg", "操作成功");
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -536,6 +541,7 @@ public class ProductNewController extends BaseController {
             productNewService.updateImageSort(productImageID, sortIndex);
             map.put("success", true);
             map.put("msg", "操作成功");
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -571,6 +577,7 @@ public class ProductNewController extends BaseController {
             }
             map.put("success", true);
             map.put("msg", "更新排序成功");
+            cleanRedisCache();
             return map;
         } catch (Exception e) {
             map.put("success", false);
@@ -623,6 +630,7 @@ public class ProductNewController extends BaseController {
             map.put("msg", "操作成功");
             // 更新索引
             searchUitls.updateProductIndex(productID);
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -644,6 +652,7 @@ public class ProductNewController extends BaseController {
             map.put("msg", "操作成功");
             // 更新索引
             searchUitls.updateProductIndex(productID);
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -682,6 +691,7 @@ public class ProductNewController extends BaseController {
                 // 删除索引
                 searchUitls.deleteProductIndex(productID);
             }
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -715,6 +725,7 @@ public class ProductNewController extends BaseController {
             } else {
                 cmSecondHandDetailService.updateRevieweInfo(date, date, productID);
             }
+            cleanRedisCache();
         } catch (Exception e) {
             logger.debug(e.toString(), e);
             map.put("success", false);
@@ -764,6 +775,7 @@ public class ProductNewController extends BaseController {
             // 更新商品库上下架状态
             productNewService.auditProduct(validFlag, productId);
             map.put("success", true);
+            cleanRedisCache();
         } catch (Exception e) {
             e.printStackTrace();
             logger.error(e.getMessage());
@@ -844,6 +856,7 @@ public class ProductNewController extends BaseController {
                 cmProductRecommendService.addRecommendProduct(productID, base.split(":")[0], base.split(":")[1]);
             }
         }
+        cleanRedisCache();
         return "redirect:" + Global.getAdminPath() + "/product/new/recommend?id=" + productID;
     }
 
@@ -855,6 +868,7 @@ public class ProductNewController extends BaseController {
     @RequestMapping(value = "recommend/delete")
     public String deleteProductRecommend(String productID, String recommendId) {
         cmProductRecommendService.deleteProductRecommend(recommendId);
+        cleanRedisCache();
         return "redirect:" + Global.getAdminPath() + "/product/new/recommend?id=" + productID;
     }
 
@@ -866,6 +880,8 @@ public class ProductNewController extends BaseController {
         String homeData = "getHomeData*";
         redisService.removePattern(homeData);
         redisService.removePattern("getHomeCommodityData*");
+        // 重新生成静态首页
+        generateUtils.generateHome();
     }
 }
 

+ 14 - 3
src/main/webapp/WEB-INF/views/modules/newhome/newPageFirstNavigationList.jsp

@@ -86,6 +86,16 @@
 				}
 			},"JSON");//这里返回的类型有:json,html,xml,text
 		}
+		// 手动生成静态首页
+		function updateStaticHome() {
+			$.post("${ctx}/newhome/newPageFirstNavigation/updateStaticHome", function(data) {
+				if(true==data.success){
+					$.jBox.tip(data.msg, 'info');
+				} else {
+					$.jBox.tip(data.msg,'error');
+				}
+			}, "JSON");
+		}
 
 		function g() {
 			//刷新页面
@@ -107,8 +117,9 @@
 <form:form id="searchForm" modelAttribute="newPageFirstNavigation" action="${ctx}/newhome/newPageFirstNavigation/" method="post" class="breadcrumb form-search">
 	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 	<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
-	<input class="btn btn-primary" style="width: 80px" onclick="batchSaveSort()" value="一键排序"/>&nbsp;&nbsp;&nbsp;&nbsp;
-	<input class="btn btn-primary" style="width: 80px" onclick="window.location='${ctx}/newhome/newPageFirstNavigation/form'" value="添加主菜单"/>
+	<input class="btn btn-primary" style="width:80px" onclick="batchSaveSort()" value="一键排序"/>&nbsp;&nbsp;&nbsp;&nbsp;
+	<input class="btn btn-primary" style="width:80px" onclick="window.location='${ctx}/newhome/newPageFirstNavigation/form'" value="添加主菜单"/>
+	<input class="btn btn-primary" style="width:100px" onclick="updateStaticHome()" value="生成静态首页"/>
 	<div style="margin-top: 10px">
 		<label><font color="#a9a9a9">注:排序值越小越靠前</font></label>
 	</div>
@@ -197,4 +208,4 @@
 </table>
 <div class="pagination">${page}</div>
 </body>
-</html>
+</html>