package com.caimei.modules.cmpage.web; import com.caimei.constants.common.RedisKeyUtil; import com.caimei.modules.cmpage.entity.CmPage; import com.caimei.modules.cmpage.entity.CmPageFreedom; import com.caimei.modules.cmpage.entity.CmPageHotSearch; import com.caimei.modules.cmpage.entity.PageNameContent; import com.caimei.modules.cmpage.service.CmPageDocSynService; import com.caimei.modules.cmpage.service.CmPageFreedomService; import com.caimei.modules.cmpage.service.CmPageService; import com.caimei.modules.opensearch.SearchUitls; import com.caimei.redis.RedisService; import com.caimei.utils.StringUtil; import com.caimei.utils.StringUtils; import com.google.common.collect.Maps; import com.thinkgem.jeesite.common.config.Global; import com.thinkgem.jeesite.common.persistence.Page; import com.thinkgem.jeesite.common.web.BaseController; import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 网页列表Controller * * @author 网页列表 * @version 2017-04-25 */ @Controller @RequestMapping(value = "${adminPath}/cmpage/cmPage") public class CmPageController extends BaseController { @Autowired private CmPageService cmPageService; @Autowired private SearchUitls searchUitls; @Autowired private RedisService redisService; @ModelAttribute public CmPage get(@RequestParam(required = false) String id) { CmPage entity = null; if (com.thinkgem.jeesite.common.utils.StringUtils.isNotBlank(id)) { entity = cmPageService.get(id); } if (entity == null) { entity = new CmPage(); } return entity; } @RequiresPermissions("cmpage:cmPage:view") @RequestMapping(value = {"list", ""}) public String list(CmPage cmPage, HttpServletRequest request, HttpServletResponse response, Model model) { if (StringUtils.equals("2", cmPage.getFlag())) {// 2网页列表(1项目详情/2二级列表/4自由页面/5分类详情/6活动专题) cmPage.getSqlMap().put("pageType", " AND (a.type=1 OR a.type=2 OR a.type=4 OR a.type=5 OR a.type=6)"); } Page page = cmPageService.findPage(new Page(request, response), cmPage); model.addAttribute("page", page); if (StringUtils.equals("2", cmPage.getFlag())) { return "modules/cmpage/cmPageList"; } return "modules/cmpage/cmLecturerPageList"; } @RequiresPermissions("cmpage:cmPage:view") @RequestMapping(value = "form") public String form(CmPage cmPage, Model model) { model.addAttribute("cmPage", cmPage); if (StringUtils.equals("21", cmPage.getFlag()) || StringUtils.equals("2", cmPage.getType())) {// 网页列表中的项目详情 return "modules/cmpage/cmPageProjectDetailForm"; } if (StringUtils.equals("22", cmPage.getFlag()) || StringUtils.equals("1", cmPage.getType())) {// 网页列表中的二级列表 return "modules/cmpage/cmPageSecondaryForm"; } if (StringUtils.equals("24", cmPage.getFlag()) || StringUtils.equals("4", cmPage.getType())) {// 网页列表中的自由页面 return "modules/cmpage/cmPageFreedomForm"; } // 网页列表中的分页详情 if (StringUtils.equals("25", cmPage.getFlag()) || StringUtils.equals("5", cmPage.getType())) { if (StringUtil.isNotBlank(cmPage.getId())) { List hotSearchList = cmPageService.findHotSearch(cmPage.getId()); cmPage.setHotSearchList(hotSearchList); } return "modules/cmpage/cmPageDetailsForm"; } // 网页列表中的活动专题 if (StringUtils.equals("26", cmPage.getFlag()) || StringUtils.equals("6", cmPage.getType())) { return "modules/cmpage/cmPageActivityForm"; } return "modules/cmpage/cmLecturerPageForm"; } @RequiresPermissions("cmpage:cmPage:edit") @RequestMapping(value = "save") public String save(CmPage cmPage, Model model, RedirectAttributes redirectAttributes, HttpServletRequest request) { if (!beanValidator(model, cmPage)) { return form(cmPage, model); } boolean saveFlag = cmPageService.save(cmPage, request); List pageNameContents = cmPage.getPageNameContents(); if (CollectionUtils.isNotEmpty(pageNameContents)) { for (PageNameContent content : pageNameContents) { String type = content.getType(); int intType = Integer.parseInt(type); String content1 = content.getContent(); int stringLengthByUtf8 = StringUtils.getStringLengthByUtf8(content1); if (intType == 3) { //富文本数量超过text保存最大数 if (!saveFlag) { List list = new ArrayList(); list.add(0, "内容编辑框输入字数过多"); addMessage(model, list.toArray(new String[]{})); return form(cmPage, model); } } } } List cmPageFreedoms = cmPage.getCmPageFreedoms(); if (CollectionUtils.isNotEmpty(cmPageFreedoms)) { for (CmPageFreedom cmPageFreedom : cmPageFreedoms) { String type = cmPageFreedom.getType(); int intType = Integer.parseInt(type); String content = cmPageFreedom.getContent(); int stringLengthByUtf8 = StringUtils.getStringLengthByUtf8(content); if (intType == 1) { //富文本数量超过text保存最大数 if (!saveFlag) { List list = new ArrayList(); list.add(0, "内容编辑框输入字数过多"); addMessage(model, list.toArray(new String[]{})); return form(cmPage, model); } } } } addMessage(redirectAttributes, "保存成功"); if ("2".equals(cmPage.getType())) { // 更新索引 searchUitls.updateEquipmentIndex(Integer.parseInt(cmPage.getId())); } else if ("6".equals(cmPage.getType())) { //清除活动专题缓存 redisService.removePattern("activityData*"); } if (StringUtils.equals("1", cmPage.getFlag())) { // 1讲师设置页面 return "redirect:" + Global.getAdminPath() + "/cmpage/cmPage/form?id=1"; } if (StringUtils.equals("2", cmPage.getFlag())) { // 2网页列表(项目详情,二级列表,自由页面) return "redirect:" + Global.getAdminPath() + "/cmpage/cmPage/?flag=2"; } return "redirect:" + Global.getAdminPath() + "/cmpage/cmPage/?repage"; } @RequiresPermissions("cmpage:cmPage:delete") @RequestMapping(value = "delete") public String delete(CmPage cmPage, RedirectAttributes redirectAttributes) { cmPageService.delete(cmPage); addMessage(redirectAttributes, "删除成功"); return "redirect:" + Global.getAdminPath() + "/cmpage/cmPage?flag=2"; } @RequiresPermissions("cmpage:cmPage:edit") @ResponseBody @RequestMapping(value = "updateEnabledStatus") public Map updateEnabledStatus(String enabledStatus, String[] ids, String[] supplierIDs, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { cmPageService.updateEnabledStatusByIds(enabledStatus, ids); map.put("success", true); map.put("msg", "修改成功"); } catch (Exception e) { logger.debug(e.toString(), e); map.put("success", false); map.put("msg", "修改失败"); } return map; } /** * 添加热搜词 */ @RequestMapping("/hotSearchForm") public String hotSearchForm(CmPageHotSearch cmPageHotSearch, Model model) { if (cmPageHotSearch.getId() != null) { cmPageHotSearch = cmPageService.getHotSearch(cmPageHotSearch.getId()); } model.addAttribute("cmPageHotSearch", cmPageHotSearch); return "modules/cmpage/cmPageHotSearchForm"; } /** * 保存分页详情 */ @RequestMapping("/savePageDetails") public String savePageDetails(CmPage cmPage, RedirectAttributes redirectAttributes, HttpServletRequest request) { cmPageService.savePageDetails(cmPage); cleanRedisCache(); addMessage(redirectAttributes, "保存成功"); return "redirect:" + Global.getAdminPath() + "/cmpage/cmPage/?flag=2"; } /** * 有数据变动时需要清除缓存 */ public void cleanRedisCache() { //热搜词缓存 String getSearchHotWord = "getSearchHotWord::spi"; if (redisService.exists(getSearchHotWord)) { redisService.remove(getSearchHotWord); } } }