Commit 44ad5f47 authored by HuangBingGui's avatar HuangBingGui
Browse files

no commit message

parent 7fa8137a
package com.jeespring.modules.cms.service;
import com.jeespring.modules.cms.entity.FileTpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletContext;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* User: songlai
* Date: 13-8-27
* Time: 下午4:56
*/
@Service
@Transactional(readOnly = true)
public class FileTplService {
@Autowired
ServletContext context;
public List<String> getNameListByPrefix(String path) {
List<FileTpl> list = getListByPath(path, false);
List<String> result = new ArrayList<String>(list.size());
for (FileTpl tpl : list) {
result.add(tpl.getName());
}
return result;
}
public List<FileTpl> getListByPath(String path, boolean directory) {
File f = new File(context.getRealPath(path));
if (f.exists()) {
File[] files = f.listFiles();
if (files != null) {
List<FileTpl> list = new ArrayList<FileTpl>();
for (File file : files) {
if(file.isFile() || directory) {
list.add(new FileTpl(file, context.getRealPath("")));
}
}
return list;
} else {
return new ArrayList<FileTpl>(0);
}
} else {
return new ArrayList<FileTpl>(0);
}
}
public List<FileTpl> getListForEdit(String path){
List<FileTpl> list = getListByPath(path, true);
List<FileTpl> result = new ArrayList<FileTpl>();
result.add(new FileTpl(new File(context.getRealPath(path)), context.getRealPath("")));
getAllDirectory(result, list);
return result;
}
private void getAllDirectory(List<FileTpl> result, List<FileTpl> list){
for (FileTpl tpl : list) {
result.add(tpl);
if(tpl.isDirectory()){
getAllDirectory(result, getListByPath(tpl.getName(), true));
}
}
}
public FileTpl getFileTpl(String name) {
File f = new File(context.getRealPath(name));
if (f.exists()) {
return new FileTpl(f, "");
} else {
return null;
}
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.service.AbstractBaseService;
import com.jeespring.modules.cms.dao.GuestbookDao;
import com.jeespring.modules.cms.entity.Guestbook;
/**
* 留言Service
* @author JeeSpring
* @version 2013-01-15
*/
@Service
@Transactional(readOnly = true)
public class GuestbookService extends AbstractBaseService<GuestbookDao, Guestbook> {
@Override
public Guestbook get(String id) {
return dao.get(id);
}
@Override
public Page<Guestbook> findPage(Page<Guestbook> page, Guestbook guestbook) {
// DetachedCriteria dc = dao.createDetachedCriteria();
// if (StringUtils.isNotEmpty(guestbook.getType())){
// dc.add(Restrictions.eq("type", guestbook.getType()));
// }
// if (StringUtils.isNotEmpty(guestbook.getContent())){
// dc.add(Restrictions.like("content", "%"+guestbook.getContent()+"%"));
// }
// dc.add(Restrictions.eq(Guestbook.FIELD_DEL_FLAG, guestbook.getDelFlag()));
// dc.addOrder(Order.desc("createDate"));
// return dao.find(page, dc);
guestbook.getSqlMap().put("dsf", dataScopeFilter(guestbook.getCurrentUser(), "o", "u"));
guestbook.setPage(page);
page.setList(dao.findList(guestbook));
return page;
}
@Transactional(readOnly = false)
public void delete(Guestbook guestbook, Boolean isRe) {
//dao.updateDelFlag(id, isRe!=null&&isRe?Guestbook.DEL_FLAG_AUDIT:Guestbook.DEL_FLAG_DELETE);
dao.delete(guestbook);
}
/**
* 更新索引
*/
public void createIndex(){
//dao.createIndex();
}
/**
* 全文检索
*/
//FIXME 暂不提供
public Page<Guestbook> search(Page<Guestbook> page, String q, String beginDate, String endDate){
// 设置查询条件
// BooleanQuery query = dao.getFullTextQuery(q, "name","content","reContent");
//
// // 设置过滤条件
// List<BooleanClause> bcList = Lists.newArrayList();
//
// bcList.add(new BooleanClause(new TermQuery(new Term(Guestbook.FIELD_DEL_FLAG, Guestbook.DEL_FLAG_NORMAL)), Occur.MUST));
//
// if (StringUtils.isNotBlank(beginDate) && StringUtils.isNotBlank(endDate)) {
// bcList.add(new BooleanClause(new TermRangeQuery("createDate", beginDate.replaceAll("-", ""),
// endDate.replaceAll("-", ""), true, true), Occur.MUST));
// }
//
// bcList.add(new BooleanClause(new TermQuery(new Term("type", "1")), Occur.SHOULD));
// bcList.add(new BooleanClause(new TermQuery(new Term("type", "2")), Occur.SHOULD));
// bcList.add(new BooleanClause(new TermQuery(new Term("type", "3")), Occur.SHOULD));
// bcList.add(new BooleanClause(new TermQuery(new Term("type", "4")), Occur.SHOULD));
//
// BooleanQuery queryFilter = dao.getFullTextQuery((BooleanClause[])bcList.toArray(new BooleanClause[bcList.size()]));
//
// System.out.println(queryFilter);
//
// // 设置排序(默认相识度排序)
// Sort sort = null;//new Sort(new SortField("updateDate", SortField.DOC, true));
// // 全文检索
// dao.search(page, query, queryFilter, sort);
// // 关键字高亮
// dao.keywordsHighlight(query, page.getList(), 30, "name");
// dao.keywordsHighlight(query, page.getList(), 1300, "content");
// dao.keywordsHighlight(query, page.getList(), 1300, "reContent");
return page;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.service;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.google.common.collect.Lists;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.service.AbstractBaseService;
import com.jeespring.common.utils.CacheUtils;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.modules.cms.dao.LinkDao;
import com.jeespring.modules.cms.entity.Link;
/**
* 链接Service
* @author JeeSpring
* @version 2013-01-15
*/
@Service
@Transactional(readOnly = true)
public class LinkService extends AbstractBaseService<LinkDao, Link> {
@Transactional(readOnly = false)
public Page<Link> findPage(Page<Link> page, Link link, boolean isDataScopeFilter) {
// 更新过期的权重,间隔为“6”个小时
Date updateExpiredWeightDate = (Date)CacheUtils.get("updateExpiredWeightDateByLink");
if (updateExpiredWeightDate == null || (updateExpiredWeightDate != null
&& updateExpiredWeightDate.getTime() < new Date().getTime())){
dao.updateExpiredWeight(link);
CacheUtils.put("updateExpiredWeightDateByLink", DateUtils.addHours(new Date(), 6));
}
link.getSqlMap().put("dsf", dataScopeFilter(link.getCurrentUser(), "o", "u"));
return super.findPage(page, link);
}
@Transactional(readOnly = false)
public void delete(Link link, Boolean isRe) {
//dao.updateDelFlag(id, isRe!=null&&isRe?Link.DEL_FLAG_NORMAL:Link.DEL_FLAG_DELETE);
link.setDelFlag(isRe!=null&&isRe?Link.DEL_FLAG_NORMAL:Link.DEL_FLAG_DELETE);
dao.delete(link);
}
/**
* 通过编号获取内容标题
*/
public List<Object[]> findByIds(String ids) {
List<Object[]> list = Lists.newArrayList();
String[] idss = StringUtils.split(ids,",");
if (idss.length>0){
List<Link> l = dao.findByIdIn(idss);
for (Link e : l){
list.add(new Object[]{e.getId(),StringUtils.abbr(e.getTitle(),50)});
}
}
return list;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.service;
import org.apache.commons.lang3.StringEscapeUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.service.AbstractBaseService;
import com.jeespring.modules.cms.dao.SiteDao;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.utils.CmsUtils;
/**
* 站点Service
* @author JeeSpring
* @version 2013-01-15
*/
@Service
@Transactional(readOnly = true)
public class SiteService extends AbstractBaseService<SiteDao, Site> {
@Override
public Page<Site> findPage(Page<Site> page, Site site) {
// DetachedCriteria dc = siteDao.createDetachedCriteria();
// if (StringUtils.isNotEmpty(site.getName())){
// dc.add(Restrictions.like("name", "%"+site.getName()+"%"));
// }
// dc.add(Restrictions.eq(Site.FIELD_DEL_FLAG, site.getDelFlag()));
// //dc.addOrder(Order.asc("id"));
// return siteDao.find(page, dc);
site.getSqlMap().put("site", dataScopeFilter(site.getCurrentUser(), "o", "u"));
return super.findPage(page, site);
}
@Override
@Transactional(readOnly = false)
public void save(Site site) {
if (site.getCopyright()!=null){
site.setCopyright(StringEscapeUtils.unescapeHtml4(site.getCopyright()));
}
super.save(site);
CmsUtils.removeCache("site_"+site.getId());
CmsUtils.removeCache("siteList");
}
@Transactional(readOnly = false)
public void delete(Site site, Boolean isRe) {
//siteDao.updateDelFlag(id, isRe!=null&&isRe?Site.DEL_FLAG_NORMAL:Site.DEL_FLAG_DELETE);
site.setDelFlag(isRe!=null&&isRe?Site.DEL_FLAG_NORMAL:Site.DEL_FLAG_DELETE);
super.delete(site);
//siteDao.delete(id);
CmsUtils.removeCache("site_"+site.getId());
CmsUtils.removeCache("siteList");
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeespring.common.service.AbstractService;
import com.jeespring.common.utils.DateUtils;
import com.jeespring.modules.cms.dao.ArticleDao;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.sys.entity.Office;
/**
* 统计Service
* @author JeeSpring
* @version 2013-05-21
*/
@Service
@Transactional(readOnly = true)
public class StatsService extends AbstractService {
@Autowired
private ArticleDao articleDao;
public List<Category> article(Map<String, Object> paramMap) {
Category category = new Category();
Site site = new Site();
site.setId(Site.getCurrentSiteId());
category.setSite(site);
Date beginDate = DateUtils.parseDate(paramMap.get("beginDate"));
if (beginDate == null){
beginDate = DateUtils.setDays(new Date(), 1);
paramMap.put("beginDate", DateUtils.formatDate(beginDate, "yyyy-MM-dd"));
}
category.setBeginDate(beginDate);
Date endDate = DateUtils.parseDate(paramMap.get("endDate"));
if (endDate == null){
endDate = DateUtils.addDays(DateUtils.addMonths(beginDate, 1), -1);
paramMap.put("endDate", DateUtils.formatDate(endDate, "yyyy-MM-dd"));
}
category.setEndDate(endDate);
String categoryId = (String)paramMap.get("categoryId");
if (categoryId != null && !("".equals(categoryId))){
category.setId(categoryId);
category.setParentIds(categoryId);
}
String officeId = (String)(paramMap.get("officeId"));
Office office = new Office();
if (officeId != null && !("".equals(officeId))){
office.setId(officeId);
category.setOffice(office);
}else{
category.setOffice(office);
}
List<Category> list = articleDao.findStats(category);
return list;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.utils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.jeespring.common.config.Global;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.mapper.JsonMapper;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.CacheUtils;
import com.jeespring.common.utils.SpringContextHolder;
import com.jeespring.modules.cms.entity.Article;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Link;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.ArticleService;
import com.jeespring.modules.cms.service.CategoryService;
import com.jeespring.modules.cms.service.LinkService;
import com.jeespring.modules.cms.service.SiteService;
import javax.servlet.ServletContext;
import org.springframework.ui.Model;
/**
* 内容管理工具类
* @author JeeSpring
* @version 2013-5-29
*/
public class CmsUtils {
private static SiteService siteService = SpringContextHolder.getBean(SiteService.class);
private static CategoryService categoryService = SpringContextHolder.getBean(CategoryService.class);
private static ArticleService articleService = SpringContextHolder.getBean(ArticleService.class);
private static LinkService linkService = SpringContextHolder.getBean(LinkService.class);
private static ServletContext context = SpringContextHolder.getBean(ServletContext.class);
private static final String CMS_CACHE = "cmsCache";
/**
* 获得站点列表
*/
public static List<Site> getSiteList(){
@SuppressWarnings("unchecked")
List<Site> siteList = (List<Site>)CacheUtils.get(CMS_CACHE, "siteList");
if (siteList == null){
Page<Site> page = new Page<Site>(1, -1);
page = siteService.findPage(page, new Site());
siteList = page.getList();
CacheUtils.put(CMS_CACHE, "siteList", siteList);
}
return siteList;
}
/**
* 获得站点信息
* @param siteId 站点编号
*/
public static Site getSite(String siteId){
String id = "1";
if (StringUtils.isNotBlank(siteId)){
id = siteId;
}
for (Site site : getSiteList()){
if (site.getId().equals(id)){
return site;
}
}
return new Site(id);
}
/**
* 获得主导航列表
* @param siteId 站点编号
*/
public static List<Category> getMainNavList(String siteId){
@SuppressWarnings("unchecked")
List<Category> mainNavList = (List<Category>)CacheUtils.get(CMS_CACHE, "mainNavList_"+siteId);
if (mainNavList == null){
Category category = new Category();
category.setSite(new Site(siteId));
category.setParent(new Category("1"));
category.setInMenu(Global.SHOW);
Page<Category> page = new Page<Category>(1, -1);
page = categoryService.find(page, category);
mainNavList = page.getList();
CacheUtils.put(CMS_CACHE, "mainNavList_"+siteId, mainNavList);
}
return mainNavList;
}
/**
* 获取栏目
* @param categoryId 栏目编号
* @return
*/
public static Category getCategory(String categoryId){
return categoryService.get(categoryId);
}
/**
* 获得栏目列表
* @param siteId 站点编号
* @param parentId 分类父编号
* @param number 获取数目
* @param param 预留参数,例: key1:'value1', key2:'value2' ...
*/
public static List<Category> getCategoryList(String siteId, String parentId, int number, String param){
Page<Category> page = new Page<Category>(1, number, -1);
Category category = new Category();
category.setSite(new Site(siteId));
category.setParent(new Category(parentId));
if (StringUtils.isNotBlank(param)){
@SuppressWarnings({ "unused", "rawtypes" })
Map map = JsonMapper.getInstance().fromJson("{"+param+"}", Map.class);
}
page = categoryService.find(page, category);
return page.getList();
}
/**
* 获取栏目
* @param categoryIds 栏目编号
* @return
*/
public static List<Category> getCategoryListByIds(String categoryIds){
return categoryService.findByIds(categoryIds);
}
/**
* 获取文章
* @param articleId 文章编号
* @return
*/
public static Article getArticle(String articleId){
return articleService.get(articleId);
}
/**
* 获取文章列表
* @param siteId 站点编号
* @param categoryId 分类编号
* @param number 获取数目
* @param param 预留参数,例: key1:'value1', key2:'value2' ...
* posid 推荐位(1:首页焦点图;2:栏目页文章推荐;)
* image 文章图片(1:有图片的文章)
* orderBy 排序字符串
* @return
* ${fnc:getArticleList(category.site.id, category.id, not empty pageSize?pageSize:8, 'posid:2, orderBy: \"hits desc\"')}"
*/
public static List<Article> getArticleList(String siteId, String categoryId, int number, String param){
Page<Article> page = new Page<Article>(1, number, -1);
Category category = new Category(categoryId, new Site(siteId));
category.setParentIds(categoryId);
Article article = new Article(category);
if (StringUtils.isNotBlank(param)){
@SuppressWarnings({ "rawtypes" })
Map map = JsonMapper.getInstance().fromJson("{"+param+"}", Map.class);
if (new Integer(1).equals(map.get("posid")) || new Integer(2).equals(map.get("posid"))){
article.setPosid(String.valueOf(map.get("posid")));
}
if (new Integer(1).equals(map.get("image"))){
article.setImage(Global.YES);
}
if (StringUtils.isNotBlank((String)map.get("orderBy"))){
page.setOrderBy((String)map.get("orderBy"));
}
}
article.setDelFlag(Article.DEL_FLAG_NORMAL);
page = articleService.findPage(page, article, false);
return page.getList();
}
/**
* 获取链接
* @param linkId 文章编号
* @return
*/
public static Link getLink(String linkId){
return linkService.get(linkId);
}
/**
* 获取链接列表
* @param siteId 站点编号
* @param categoryId 分类编号
* @param number 获取数目
* @param param 预留参数,例: key1:'value1', key2:'value2' ...
* @return
*/
public static List<Link> getLinkList(String siteId, String categoryId, int number, String param){
Page<Link> page = new Page<Link>(1, number, -1);
Link link = new Link(new Category(categoryId, new Site(siteId)));
if (StringUtils.isNotBlank(param)){
@SuppressWarnings({ "unused", "rawtypes" })
Map map = JsonMapper.getInstance().fromJson("{"+param+"}", Map.class);
}
link.setDelFlag(Link.DEL_FLAG_NORMAL);
page = linkService.findPage(page, link, false);
return page.getList();
}
// ============== Cms Cache ==============
public static Object getCache(String key) {
return CacheUtils.get(CMS_CACHE, key);
}
public static void putCache(String key, Object value) {
CacheUtils.put(CMS_CACHE, key, value);
}
public static void removeCache(String key) {
CacheUtils.remove(CMS_CACHE, key);
}
/**
* 获得文章动态URL地址
* @param article
* @return url
*/
public static String getUrlDynamic(Article article) {
if(StringUtils.isNotBlank(article.getLink())){
return article.getLink();
}
StringBuilder str = new StringBuilder();
str.append(context.getContextPath()).append(Global.getFrontPath());
str.append("/view-").append(article.getCategory().getId()).append("-").append(article.getId()).append(Global.getUrlSuffix());
return str.toString();
}
/**
* 获得栏目动态URL地址
* @param category
* @return url
*/
public static String getUrlDynamic(Category category) {
if(StringUtils.isNotBlank(category.getHref())){
if(!category.getHref().contains("://")){
return context.getContextPath()+Global.getFrontPath()+category.getHref();
}else{
return category.getHref();
}
}
StringBuilder str = new StringBuilder();
str.append(context.getContextPath()).append(Global.getFrontPath());
str.append("/list-").append(category.getId()).append(Global.getUrlSuffix());
return str.toString();
}
/**
* 从图片地址中去除ContextPath地址
* @param src
* @return src
*/
public static String formatImageSrcToDb(String src) {
if(StringUtils.isBlank(src)) {
return src;
}
if(src.startsWith(context.getContextPath() + "/userfiles")){
return src.substring(context.getContextPath().length());
}else{
return src;
}
}
/**
* 从图片地址中加入ContextPath地址
* @param src
* @return src
*/
public static String formatImageSrcToWeb(String src) {
if(StringUtils.isBlank(src)) {
return src;
}
if(src.startsWith(context.getContextPath() + "/userfiles")){
return src;
}else{
return context.getContextPath()+src;
}
}
public static void addViewConfigAttribute(Model model, String param){
if(StringUtils.isNotBlank(param)){
@SuppressWarnings("rawtypes")
Map map = JsonMapper.getInstance().fromJson(param, Map.class);
if(map != null){
for(Object o : map.keySet()){
model.addAttribute("viewConfig_"+o.toString(), map.get(o));
}
}
}
}
public static void addViewConfigAttribute(Model model, Category category){
List<Category> categoryList = Lists.newArrayList();
Category c = category;
boolean goon = true;
do{
if(c.getParent() == null || c.getParent().isRoot()){
goon = false;
}
categoryList.add(c);
c = c.getParent();
}while(goon);
Collections.reverse(categoryList);
for(Category ca : categoryList){
addViewConfigAttribute(model, ca.getViewConfig());
}
}
}
\ No newline at end of file
package com.jeespring.modules.cms.utils;
import com.jeespring.common.utils.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
* User: songlai
* Date: 13-8-22
* Time: 上午10:23
*/
public class TplUtils {
/**
* 去除模板前缀
*
* @param list 模板列表
* @param prefix 模板前缀 例如“frontViewArticle”
* @param include 需包含的模板 例如“/WEB-INF/views/modules/cms/front/themes/jeesite/articleSelectList.jsp”
* @param excludes 需去除的模板 例如“frontViewArticle”
* @return
*/
public static List<String> tplTrim(List<String> list, String prefix, String include, String... excludes) {
List<String> result = new ArrayList<String>();
if (!StringUtils.isBlank(include) && !list.contains(include)) {
if (!tplContain(excludes, include)) {
int start = include.lastIndexOf("/");
int end = include.lastIndexOf(".");
if (start == -1 || end == -1) {
throw new RuntimeException("include not contain '/' or '.':" + include);
}
result.add(include.substring(start + 1, end));
}
}
for (String t : list) {
if (!tplContain(excludes, t)) {
int start = t.lastIndexOf("/");
int end = t.lastIndexOf(".");
if (start == -1 || end == -1) {
throw new RuntimeException("name not contain '/' or '.':" + t);
}
t = t.substring(start + 1, end);
if(t.contains(prefix)){
result.add(t);
}
}
}
return result;
}
/**
* 检查tpl是否存在于excludes里面。
*
* @param excludes
* @param tpl
* @return
*/
private static boolean tplContain(String[] excludes, String tpl) {
int start = tpl.lastIndexOf("/");
int end = tpl.lastIndexOf(".");
if (start == -1 || end == -1) {
throw new RuntimeException("tpl not contain '/' or '.':" + tpl);
}
String name = tpl.substring(start + 1, end);
for (String e : excludes) {
if (e.equals(name)) {
return true;
}
}
return false;
}
}
package com.jeespring.modules.cms.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import org.apache.commons.lang3.StringUtils;
public class WiexinSignUtil {
// 与接口配置信息中的Token要一致
private static String token = "ecjeesitecom";
/**
* 验证签名
*
* @param signature
* @param timestamp
* @param nonce
* @return
*/
public static boolean checkSignature(String signature, String timestamp, String nonce) {
if (StringUtils.isNotBlank(signature) && StringUtils.isNotBlank(timestamp) && StringUtils.isNotBlank(nonce)){
String[] arr = new String[] { token, timestamp, nonce };
// 将token、timestamp、nonce三个参数进行字典序排序
Arrays.sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
content = null;
// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信
return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
}
return false;
}
/**
* 将字节数组转换为十六进制字符串
*
* @param byteArray
* @return
*/
private static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}
/**
* 将字节转换为十六进制字符串
*
* @param mByte
* @return
*/
private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F];
String s = new String(tempArr);
return s;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 com.jeespring.common.mapper.JsonMapper;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Article;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.ArticleDataService;
import com.jeespring.modules.cms.service.ArticleService;
import com.jeespring.modules.cms.service.CategoryService;
import com.jeespring.modules.cms.service.FileTplService;
import com.jeespring.modules.cms.service.SiteService;
import com.jeespring.modules.cms.utils.CmsUtils;
import com.jeespring.modules.cms.utils.TplUtils;
import com.jeespring.modules.sys.utils.UserUtils;
/**
* 文章Controller
* @author JeeSpring
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/article")
public class ArticleController extends AbstractBaseController {
@Autowired
private ArticleService articleService;
@Autowired
private ArticleDataService articleDataService;
@Autowired
private CategoryService categoryService;
@Autowired
private FileTplService fileTplService;
@Autowired
private SiteService siteService;
@ModelAttribute
public Article get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return articleService.get(id);
}else{
return new Article();
}
}
@RequiresPermissions("cms:article:view")
@RequestMapping(value = {"list", ""})
public String list(Article article, HttpServletRequest request, HttpServletResponse response, Model model) {
// for (int i=0; i<10000000; i++){
// Article a = new Article();
// a.setCategory(new Category(article.getCategory().getId()));
// a.setTitle("测试测试测试测试测试测试测试测试"+a.getCategory().getId());
// a.setArticleData(new ArticleData());
// a.getArticleData().setContent(a.getTitle());
// articleService.save(a);
// }
Page<Article> page = articleService.findPage(new Page<Article>(request, response), article, true);
model.addAttribute("page", page);
return "modules/cms/articleList";
}
@RequiresPermissions("cms:article:view")
@RequestMapping(value = "form")
public String form(Article article, Model model) {
// 如果当前传参有子节点,则选择取消传参选择
if (article.getCategory()!=null && StringUtils.isNotBlank(article.getCategory().getId())){
List<Category> list = categoryService.findByParentId(article.getCategory().getId(), Site.getCurrentSiteId());
/*if (list.size() > 0){
article.setCategory(null);
}else{
article.setCategory(categoryService.get(article.getCategory().getId()));
}*/
article.setCategory(categoryService.get(article.getCategory().getId()));
}
article.setArticleData(articleDataService.get(article.getId()));
// if (article.getCategory()=null && StringUtils.isNotBlank(article.getCategory().getId())){
// Category category = categoryService.get(article.getCategory().getId());
// }
model.addAttribute("contentViewList",getTplContent());
model.addAttribute("article_DEFAULT_TEMPLATE",Article.DEFAULT_TEMPLATE);
model.addAttribute("article", article);
CmsUtils.addViewConfigAttribute(model, article.getCategory());
return "modules/cms/articleForm";
}
@RequiresPermissions("cms:article:edit")
@RequestMapping(value = "save")
public String save(Article article, Model model, RedirectAttributes redirectAttributes) {
if (!beanValidator(model, article)){
return form(article, model);
}
articleService.save(article);
addMessage(redirectAttributes, "保存文章'" + StringUtils.abbr(article.getTitle(),50) + "'成功");
String categoryId = article.getCategory()!=null?article.getCategory().getId():null;
return "redirect:" + adminPath + "/cms/article/?repage&category.id="+(categoryId!=null?categoryId:"");
}
@RequiresPermissions("cms:article:edit")
@RequestMapping(value = "delete")
public String delete(Article article, String categoryId, @RequestParam(required=false) Boolean isRe, RedirectAttributes redirectAttributes) {
// 如果没有审核权限,则不允许删除或发布。
if (!UserUtils.getSubject().isPermitted("cms:article:audit")){
addMessage(redirectAttributes, "你没有删除或发布权限");
}
articleService.delete(article, isRe);
addMessage(redirectAttributes, (isRe!=null&&isRe?"发布":"删除")+"文章成功");
return "redirect:" + adminPath + "/cms/article/?repage&category.id="+(categoryId!=null?categoryId:"");
}
/**
* 文章选择列表
*/
@RequiresPermissions("cms:article:view")
@RequestMapping(value = "selectList")
public String selectList(Article article, HttpServletRequest request, HttpServletResponse response, Model model) {
list(article, request, response, model);
return "modules/cms/articleSelectList";
}
/**
* 通过编号获取文章标题
*/
@RequiresPermissions("cms:article:view")
@ResponseBody
@RequestMapping(value = "findByIds")
public String findByIds(String ids) {
List<Object[]> list = articleService.findByIds(ids);
return JsonMapper.nonDefaultMapper().toJson(list);
}
private List<String> getTplContent() {
List<String> tplList = fileTplService.getNameListByPrefix(siteService.get(Site.getCurrentSiteId()).getSolutionPath());
tplList = TplUtils.tplTrim(tplList, Article.DEFAULT_TEMPLATE, "");
return tplList;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresUser;
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 com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.jeespring.common.config.Global;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Article;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.CategoryService;
import com.jeespring.modules.cms.service.FileTplService;
import com.jeespring.modules.cms.service.SiteService;
import com.jeespring.modules.cms.utils.TplUtils;
/**
* 栏目Controller
* @author JeeSpring
* @version 2013-4-21
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/category")
public class CategoryController extends AbstractBaseController {
@Autowired
private CategoryService categoryService;
@Autowired
private FileTplService fileTplService;
@Autowired
private SiteService siteService;
@ModelAttribute("category")
public Category get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return categoryService.get(id);
}else{
return new Category();
}
}
@RequiresPermissions("cms:category:view")
@RequestMapping(value = {"list", ""})
public String list(Model model) {
List<Category> list = Lists.newArrayList();
List<Category> sourcelist = categoryService.findByUser(true, null);
Category.sortList(list, sourcelist, "1");
model.addAttribute("list", list);
return "modules/cms/categoryList";
}
@RequiresPermissions("cms:category:view")
@RequestMapping(value = "form")
public String form(Category category, Model model) {
if (category.getParent()==null||category.getParent().getId()==null){
category.setParent(new Category("1"));
}
Category parent = categoryService.get(category.getParent().getId());
category.setParent(parent);
if (category.getOffice()==null||category.getOffice().getId()==null){
category.setOffice(parent.getOffice());
}
model.addAttribute("listViewList",getTplContent(Category.DEFAULT_TEMPLATE));
model.addAttribute("category_DEFAULT_TEMPLATE",Category.DEFAULT_TEMPLATE);
model.addAttribute("contentViewList",getTplContent(Article.DEFAULT_TEMPLATE));
model.addAttribute("article_DEFAULT_TEMPLATE",Article.DEFAULT_TEMPLATE);
model.addAttribute("office", category.getOffice());
model.addAttribute("category", category);
return "modules/cms/categoryForm";
}
@RequiresPermissions("cms:category:edit")
@RequestMapping(value = "save")
public String save(Category category, Model model, RedirectAttributes redirectAttributes) {
if(Global.isDemoMode()){
addMessage(redirectAttributes, "演示模式,不允许操作!");
return "redirect:" + adminPath + "/cms/category/";
}
if (!beanValidator(model, category)){
return form(category, model);
}
categoryService.save(category);
addMessage(redirectAttributes, "保存栏目'" + category.getName() + "'成功");
return "redirect:" + adminPath + "/cms/category/";
}
@RequiresPermissions("cms:category:edit")
@RequestMapping(value = "delete")
public String delete(Category category, RedirectAttributes redirectAttributes) {
if(Global.isDemoMode()){
addMessage(redirectAttributes, "演示模式,不允许操作!");
return "redirect:" + adminPath + "/cms/category/";
}
if (Category.isRoot(category.getId())){
addMessage(redirectAttributes, "删除栏目失败, 不允许删除顶级栏目或编号为空");
}else{
categoryService.delete(category);
addMessage(redirectAttributes, "删除栏目成功");
}
return "redirect:" + adminPath + "/cms/category/";
}
/**
* 批量修改栏目排序
*/
@RequiresPermissions("cms:category:edit")
@RequestMapping(value = "updateSort")
public String updateSort(String[] ids, Integer[] sorts, RedirectAttributes redirectAttributes) {
int len = ids.length;
Category[] entitys = new Category[len];
for (int i = 0; i < len; i++) {
entitys[i] = categoryService.get(ids[i]);
entitys[i].setSort(sorts[i]);
categoryService.save(entitys[i]);
}
addMessage(redirectAttributes, "保存栏目排序成功!");
return "redirect:" + adminPath + "/cms/category/";
}
@RequiresUser
@ResponseBody
@RequestMapping(value = "treeData")
public List<Map<String, Object>> treeData(String module, @RequestParam(required=false) String extId, HttpServletResponse response) {
response.setContentType("application/json; charset=UTF-8");
List<Map<String, Object>> mapList = Lists.newArrayList();
List<Category> list = categoryService.findByUser(true, module);
for (int i=0; i<list.size(); i++){
Category e = list.get(i);
if (extId == null || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){
Map<String, Object> map = Maps.newHashMap();
map.put("id", e.getId());
map.put("pId", e.getParent()!=null?e.getParent().getId():0);
map.put("name", e.getName());
map.put("module", e.getModule());
mapList.add(map);
}
}
return mapList;
}
private List<String> getTplContent(String prefix) {
List<String> tplList = fileTplService.getNameListByPrefix(siteService.get(Site.getCurrentSiteId()).getSolutionPath());
tplList = TplUtils.tplTrim(tplList, prefix, "");
return tplList;
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
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.RequestMapping;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.service.CategoryService;
/**
* 内容管理Controller
* @author JeeSpring
* @version 2013-4-21
*/
@Controller
@RequestMapping(value = "${adminPath}/cms")
public class CmsController extends AbstractBaseController {
@Autowired
private CategoryService categoryService;
@RequiresPermissions("cms:view")
@RequestMapping(value = "")
public String index() {
return "modules/cms/cmsIndex";
}
@RequiresPermissions("cms:view")
@RequestMapping(value = "tree")
public String tree(Model model) {
model.addAttribute("categoryList", categoryService.findByUser(true, null));
return "modules/cms/cmsTree";
}
@RequiresPermissions("cms:view")
@RequestMapping(value = "none")
public String none() {
return "modules/cms/cmsNone";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.servlet.mvc.support.RedirectAttributes;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Comment;
import com.jeespring.modules.cms.service.CommentService;
import com.jeespring.modules.sys.utils.DictUtils;
import com.jeespring.modules.sys.utils.UserUtils;
/**
* 评论Controller
* @author JeeSpring
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/comment")
public class CommentController extends AbstractBaseController {
@Autowired
private CommentService commentService;
@ModelAttribute
public Comment get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return commentService.get(id);
}else{
return new Comment();
}
}
@RequiresPermissions("cms:comment:view")
@RequestMapping(value = {"list", ""})
public String list(Comment comment, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<Comment> page = commentService.findPage(new Page<Comment>(request, response), comment);
model.addAttribute("page", page);
return "modules/cms/commentList";
}
@RequiresPermissions("cms:comment:edit")
@RequestMapping(value = "save")
public String save(Comment comment, RedirectAttributes redirectAttributes) {
if (beanValidator(redirectAttributes, comment)){
if (comment.getAuditUser() == null){
comment.setAuditUser(UserUtils.getUser());
comment.setAuditDate(new Date());
}
comment.setDelFlag(Comment.DEL_FLAG_NORMAL);
commentService.save(comment);
addMessage(redirectAttributes, DictUtils.getDictLabel(comment.getDelFlag(), "cms_del_flag", "保存")
+"评论'" + StringUtils.abbr(StringUtils.replaceHtml(comment.getContent()),50) + "'成功");
}
return "redirect:" + adminPath + "/cms/comment/?repage&delFlag=2";
}
@RequiresPermissions("cms:comment:edit")
@RequestMapping(value = "delete")
public String delete(Comment comment, @RequestParam(required=false) Boolean isRe, RedirectAttributes redirectAttributes) {
commentService.delete(comment, isRe);
addMessage(redirectAttributes, (isRe!=null&&isRe?"恢复审核":"删除")+"评论成功");
return "redirect:" + adminPath + "/cms/comment/?repage&delFlag=2";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.servlet.mvc.support.RedirectAttributes;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Guestbook;
import com.jeespring.modules.cms.service.GuestbookService;
import com.jeespring.modules.sys.utils.DictUtils;
import com.jeespring.modules.sys.utils.UserUtils;
/**
* 留言Controller
* @author JeeSpring
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/guestbook")
public class GuestbookController extends AbstractBaseController {
@Autowired
private GuestbookService guestbookService;
@ModelAttribute
public Guestbook get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return guestbookService.get(id);
}else{
return new Guestbook();
}
}
@RequiresPermissions("cms:guestbook:view")
@RequestMapping(value = {"list", ""})
public String list(Guestbook guestbook, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<Guestbook> page = guestbookService.findPage(new Page<Guestbook>(request, response), guestbook);
model.addAttribute("page", page);
return "modules/cms/guestbookList";
}
@RequiresPermissions("cms:guestbook:view")
@RequestMapping(value = "form")
public String form(Guestbook guestbook, Model model) {
model.addAttribute("guestbook", guestbook);
return "modules/cms/guestbookForm";
}
@RequiresPermissions("cms:guestbook:edit")
@RequestMapping(value = "save")
public String save(Guestbook guestbook, Model model, RedirectAttributes redirectAttributes) {
if (!beanValidator(model, guestbook)){
return form(guestbook, model);
}
if (guestbook.getReUser() == null){
guestbook.setReUser(UserUtils.getUser());
guestbook.setReDate(new Date());
}
guestbookService.save(guestbook);
addMessage(redirectAttributes, DictUtils.getDictLabel(guestbook.getDelFlag(), "cms_del_flag", "保存")
+"留言'" + guestbook.getName() + "'成功");
return "redirect:" + adminPath + "/cms/guestbook/?repage&status=2";
}
@RequiresPermissions("cms:guestbook:edit")
@RequestMapping(value = "delete")
public String delete(Guestbook guestbook, @RequestParam(required=false) Boolean isRe, RedirectAttributes redirectAttributes) {
guestbookService.delete(guestbook, isRe);
addMessage(redirectAttributes, (isRe!=null&&isRe?"恢复审核":"删除")+"留言成功");
return "redirect:" + adminPath + "/cms/guestbook/?repage&status=2";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 com.jeespring.common.mapper.JsonMapper;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Link;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.CategoryService;
import com.jeespring.modules.cms.service.LinkService;
/**
* 链接Controller
* @author JeeSpring
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/link")
public class LinkController extends AbstractBaseController {
@Autowired
private LinkService linkService;
@Autowired
private CategoryService categoryService;
@ModelAttribute
public Link get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return linkService.get(id);
}else{
return new Link();
}
}
@RequiresPermissions("cms:link:view")
@RequestMapping(value = {"list", ""})
public String list(Link link, HttpServletRequest request, HttpServletResponse response, Model model) {
// User user = UserUtils.getUser();
// if (!user.isAdmin() && !SecurityUtils.getSubject().isPermitted("cms:link:audit")){
// link.setUser(user);
// }
Page<Link> page = linkService.findPage(new Page<Link>(request, response), link, true);
model.addAttribute("page", page);
return "modules/cms/linkList";
}
@RequiresPermissions("cms:link:view")
@RequestMapping(value = "form")
public String form(Link link, Model model) {
// 如果当前传参有子节点,则选择取消传参选择
if (link.getCategory()!=null && StringUtils.isNotBlank(link.getCategory().getId())){
List<Category> list = categoryService.findByParentId(link.getCategory().getId(), Site.getCurrentSiteId());
if (list.size() > 0){
link.setCategory(null);
}else{
link.setCategory(categoryService.get(link.getCategory().getId()));
}
}
model.addAttribute("link", link);
return "modules/cms/linkForm";
}
@RequiresPermissions("cms:link:edit")
@RequestMapping(value = "save")
public String save(Link link, Model model, RedirectAttributes redirectAttributes) {
if (!beanValidator(model, link)){
return form(link, model);
}
linkService.save(link);
addMessage(redirectAttributes, "保存链接'" + StringUtils.abbr(link.getTitle(),50) + "'成功");
return "redirect:" + adminPath + "/cms/link/?repage&category.id="+link.getCategory().getId();
}
@RequiresPermissions("cms:link:edit")
@RequestMapping(value = "delete")
public String delete(Link link, String categoryId, @RequestParam(required=false) Boolean isRe, RedirectAttributes redirectAttributes) {
linkService.delete(link, isRe);
addMessage(redirectAttributes, (isRe!=null&&isRe?"发布":"删除")+"链接成功");
return "redirect:" + adminPath + "/cms/link/?repage&category.id="+categoryId;
}
/**
* 链接选择列表
*/
@RequiresPermissions("cms:link:view")
@RequestMapping(value = "selectList")
public String selectList(Link link, HttpServletRequest request, HttpServletResponse response, Model model) {
list(link, request, response, model);
return "modules/cms/linkSelectList";
}
/**
* 通过编号获取链接名称
*/
@RequiresPermissions("cms:link:view")
@ResponseBody
@RequestMapping(value = "findByIds")
public String findByIds(String ids) {
List<Object[]> list = linkService.findByIds(ids);
return JsonMapper.nonDefaultMapper().toJson(list);
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.servlet.mvc.support.RedirectAttributes;
import com.jeespring.common.config.Global;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.CookieUtils;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.SiteService;
import com.jeespring.modules.sys.utils.UserUtils;
/**
* 站点Controller
* @author JeeSpring
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/site")
public class SiteController extends AbstractBaseController {
@Autowired
private SiteService siteService;
@ModelAttribute
public Site get(@RequestParam(required=false) String id) {
if (StringUtils.isNotBlank(id)){
return siteService.get(id);
}else{
return new Site();
}
}
@RequiresPermissions("cms:site:view")
@RequestMapping(value = {"list", ""})
public String list(Site site, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<Site> page = siteService.findPage(new Page<Site>(request, response), site);
model.addAttribute("page", page);
return "modules/cms/siteList";
}
@RequiresPermissions("cms:site:view")
@RequestMapping(value = "form")
public String form(Site site, Model model) {
model.addAttribute("site", site);
return "modules/cms/siteForm";
}
@RequiresPermissions("cms:site:edit")
@RequestMapping(value = "save")
public String save(Site site, Model model, RedirectAttributes redirectAttributes) {
if(Global.isDemoMode()){
addMessage(redirectAttributes, "演示模式,不允许操作!");
return "redirect:" + adminPath + "/cms/site/?repage";
}
if (!beanValidator(model, site)){
return form(site, model);
}
siteService.save(site);
addMessage(redirectAttributes, "保存站点'" + site.getName() + "'成功");
return "redirect:" + adminPath + "/cms/site/?repage";
}
@RequiresPermissions("cms:site:edit")
@RequestMapping(value = "delete")
public String delete(Site site, @RequestParam(required=false) Boolean isRe, RedirectAttributes redirectAttributes) {
if(Global.isDemoMode()){
addMessage(redirectAttributes, "演示模式,不允许操作!");
return "redirect:" + adminPath + "/cms/site/?repage";
}
if (Site.isDefault(site.getId())){
addMessage(redirectAttributes, "删除站点失败, 不允许删除默认站点");
}else{
siteService.delete(site, isRe);
addMessage(redirectAttributes, (isRe!=null&&isRe?"恢复":"")+"删除站点成功");
}
return "redirect:" + adminPath + "/cms/site/?repage";
}
/**
* 选择站点
* @param id
* @return
*/
@RequiresPermissions("cms:site:select")
@RequestMapping(value = "select")
public String select(String id, boolean flag, HttpServletResponse response){
if (id!=null){
UserUtils.putCache("siteId", id);
// 保存到Cookie中,下次登录后自动切换到该站点
CookieUtils.setCookie(response, "siteId", id);
}
if (flag){
return "redirect:" + adminPath;
}
return "modules/cms/siteSelect";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web;
import java.util.List;
import java.util.Map;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.service.StatsService;
/**
* 统计Controller
* @author JeeSpring
* @version 2013-5-21
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/stats")
public class StatsController extends AbstractBaseController {
@Autowired
private StatsService statsService;
/**
* 文章信息量
* @param paramMap
* @param model
* @return
*/
@RequiresPermissions("cms:stats:article")
@RequestMapping(value = "article")
public String article(@RequestParam Map<String, Object> paramMap, Model model) {
List<Category> list = statsService.article(paramMap);
model.addAttribute("list", list);
model.addAttribute("paramMap", paramMap);
return "modules/cms/statsArticle";
}
}
package com.jeespring.modules.cms.web;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.FileTplService;
import com.jeespring.modules.cms.service.SiteService;
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.RequestMapping;
/**
* 站点Controller
* @author SongLai
* @version 2013-3-23
*/
@Controller
@RequestMapping(value = "${adminPath}/cms/template")
public class TemplateController extends AbstractBaseController {
@Autowired
private FileTplService fileTplService;
@Autowired
private SiteService siteService;
@RequiresPermissions("cms:template:edit")
@RequestMapping(value = "")
public String index() {
return "modules/cms/tplIndex";
}
@RequiresPermissions("cms:template:edit")
@RequestMapping(value = "tree")
public String tree(Model model) {
Site site = siteService.get(Site.getCurrentSiteId());
model.addAttribute("templateList", fileTplService.getListForEdit(site.getSolutionPath()));
return "modules/cms/tplTree";
}
@RequiresPermissions("cms:template:edit")
@RequestMapping(value = "form")
public String form(String name, Model model) {
model.addAttribute("template", fileTplService.getFileTpl(name));
return "modules/cms/tplForm";
}
@RequiresPermissions("cms:template:edit")
@RequestMapping(value = "help")
public String help() {
return "modules/cms/tplHelp";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web.front;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.common.collect.Lists;
import com.jeespring.common.config.Global;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.servlet.ValidateCodeServlet;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Article;
import com.jeespring.modules.cms.entity.Category;
import com.jeespring.modules.cms.entity.Comment;
import com.jeespring.modules.cms.entity.Link;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.ArticleDataService;
import com.jeespring.modules.cms.service.ArticleService;
import com.jeespring.modules.cms.service.CategoryService;
import com.jeespring.modules.cms.service.CommentService;
import com.jeespring.modules.cms.service.LinkService;
import com.jeespring.modules.cms.service.SiteService;
import com.jeespring.modules.cms.utils.CmsUtils;
/**
* 网站Controller
* @author JeeSpring
* @version 2013-5-29
*/
@Controller
@RequestMapping(value = "${frontPath}")
public class FrontController extends AbstractBaseController{
@Autowired
private ArticleService articleService;
@Autowired
private ArticleDataService articleDataService;
@Autowired
private LinkService linkService;
@Autowired
private CommentService commentService;
@Autowired
private CategoryService categoryService;
@Autowired
private SiteService siteService;
/**
* 网站首页
*/
@RequestMapping
public String index(Model model,HttpServletRequest request, HttpServletResponse response) {
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
model.addAttribute("isIndex", true);
if(request.getParameter("theme")!=null){
site.setTheme(request.getParameter("theme"));
}
return "modules/cms/front/themes/"+site.getTheme()+"/frontIndex";
}
@RequestMapping(value = "index2")
public String index2(Model model,HttpServletRequest request, HttpServletResponse response) {
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
model.addAttribute("isIndex", true);
if(request.getParameter("theme")!=null){
site.setTheme(request.getParameter("theme"));
}
return "modules/cms/front/themes/"+site.getTheme()+"/index";
}
/**
* 网站首页
*/
@RequestMapping(value = "index-{siteId}${urlSuffix}")
public String index(@PathVariable String siteId, Model model) {
if ("1".equals(siteId)){
return "redirect:"+Global.getFrontPath();
}
Site site = CmsUtils.getSite(siteId);
// 子站有独立页面,则显示独立页面
if (StringUtils.isNotBlank(site.getCustomIndexView())){
model.addAttribute("site", site);
model.addAttribute("isIndex", true);
return "modules/cms/front/themes/"+site.getTheme()+"/frontIndex"+site.getCustomIndexView();
}
// 否则显示子站第一个栏目
List<Category> mainNavList = CmsUtils.getMainNavList(siteId);
if (mainNavList.size() > 0){
String firstCategoryId = CmsUtils.getMainNavList(siteId).get(0).getId();
return "redirect:"+Global.getFrontPath()+"/list-"+firstCategoryId+Global.getUrlSuffix();
}else{
model.addAttribute("site", site);
return "modules/cms/front/themes/"+site.getTheme()+"/frontListCategory";
}
}
/**
* 内容列表
*/
@RequestMapping(value = "list-{categoryId}${urlSuffix}")
public String list(@PathVariable String categoryId, @RequestParam(required=false, defaultValue="1") Integer pageNo,
@RequestParam(required=false, defaultValue="15") Integer pageSize, Model model) {
Category category = categoryService.get(categoryId);
if (category==null){
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
return "error/404";
}
Site site = siteService.get(category.getSite().getId());
model.addAttribute("site", site);
// 2:简介类栏目,栏目第一条内容
if("2".equals(category.getShowModes()) && "article".equals(category.getModule())){
// 如果没有子栏目,并父节点为跟节点的,栏目列表为当前栏目。
List<Category> categoryList = Lists.newArrayList();
if ("1".equals(category.getParent().getId())){
categoryList.add(category);
}else{
categoryList = categoryService.findByParentId(category.getParent().getId(), category.getSite().getId());
}
model.addAttribute("category", category);
model.addAttribute("categoryList", categoryList);
// 获取文章内容
Page<Article> page = new Page<Article>(1, 1, -1);
Article article = new Article(category);
page = articleService.findPage(page, article, false);
if (page.getList().size()>0){
article = page.getList().get(0);
article.setArticleData(articleDataService.get(article.getId()));
articleService.updateHitsAddOne(article.getId());
}
model.addAttribute("article", article);
CmsUtils.addViewConfigAttribute(model, category);
CmsUtils.addViewConfigAttribute(model, article.getViewConfig());
return "modules/cms/front/themes/"+site.getTheme()+"/"+getTpl(article);
}else{
List<Category> categoryList = categoryService.findByParentId(category.getId(), category.getSite().getId());
// 展现方式为1 、无子栏目或公共模型,显示栏目内容列表
if("1".equals(category.getShowModes())||categoryList.size()==0){
// 有子栏目并展现方式为1,则获取第一个子栏目;无子栏目,则获取同级分类列表。
if(categoryList.size()>0){
category = categoryList.get(0);
}else{
// 如果没有子栏目,并父节点为跟节点的,栏目列表为当前栏目。
if ("1".equals(category.getParent().getId())){
categoryList.add(category);
}else{
categoryList = categoryService.findByParentId(category.getParent().getId(), category.getSite().getId());
}
}
model.addAttribute("category", category);
model.addAttribute("categoryList", categoryList);
// 获取内容列表
if ("article".equals(category.getModule())){
Page<Article> page = new Page<Article>(pageNo, pageSize);
//System.out.println(page.getPageNo());
page = articleService.findPage(page, new Article(category), false);
model.addAttribute("page", page);
// 如果第一个子栏目为简介类栏目,则获取该栏目第一篇文章
if ("2".equals(category.getShowModes())){
Article article = new Article(category);
if (page.getList().size()>0){
article = page.getList().get(0);
article.setArticleData(articleDataService.get(article.getId()));
articleService.updateHitsAddOne(article.getId());
}
model.addAttribute("article", article);
CmsUtils.addViewConfigAttribute(model, category);
CmsUtils.addViewConfigAttribute(model, article.getViewConfig());
return "modules/cms/front/themes/"+site.getTheme()+"/"+getTpl(article);
}
}else if ("link".equals(category.getModule())){
Page<Link> page = new Page<Link>(1, -1);
page = linkService.findPage(page, new Link(category), false);
model.addAttribute("page", page);
}
String view = "/frontList";
if (StringUtils.isNotBlank(category.getCustomListView())){
view = "/"+category.getCustomListView();
}
CmsUtils.addViewConfigAttribute(model, category);
site =siteService.get(category.getSite().getId());
//System.out.println("else 栏目第一条内容 _2 :"+category.getSite().getTheme()+","+site.getTheme());
return "modules/cms/front/themes/"+siteService.get(category.getSite().getId()).getTheme()+view;
//return "modules/cms/front/themes/"+category.getSite().getTheme()+view;
}
// 有子栏目:显示子栏目列表
else{
model.addAttribute("category", category);
model.addAttribute("categoryList", categoryList);
String view = "/frontListCategory";
if (StringUtils.isNotBlank(category.getCustomListView())){
view = "/"+category.getCustomListView();
}
CmsUtils.addViewConfigAttribute(model, category);
return "modules/cms/front/themes/"+site.getTheme()+view;
}
}
}
/**
* 内容列表(通过url自定义视图)
*/
@RequestMapping(value = "listc-{categoryId}-{customView}${urlSuffix}")
public String listCustom(@PathVariable String categoryId, @PathVariable String customView, @RequestParam(required=false, defaultValue="1") Integer pageNo,
@RequestParam(required=false, defaultValue="15") Integer pageSize, Model model) {
Category category = categoryService.get(categoryId);
if (category==null){
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
return "error/404";
}
Site site = siteService.get(category.getSite().getId());
model.addAttribute("site", site);
List<Category> categoryList = categoryService.findByParentId(category.getId(), category.getSite().getId());
model.addAttribute("category", category);
model.addAttribute("categoryList", categoryList);
CmsUtils.addViewConfigAttribute(model, category);
return "modules/cms/front/themes/"+site.getTheme()+"/frontListCategory"+customView;
}
/**
* 显示内容
*/
@RequestMapping(value = "view-{categoryId}-{contentId}${urlSuffix}")
public String view(@PathVariable String categoryId, @PathVariable String contentId, Model model) {
Category category = categoryService.get(categoryId);
if (category==null){
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
return "error/404";
}
model.addAttribute("site", category.getSite());
if ("article".equals(category.getModule())){
// 如果没有子栏目,并父节点为跟节点的,栏目列表为当前栏目。
List<Category> categoryList = Lists.newArrayList();
if ("1".equals(category.getParent().getId())){
categoryList.add(category);
}else{
categoryList = categoryService.findByParentId(category.getParent().getId(), category.getSite().getId());
}
// 获取文章内容
Article article = articleService.get(contentId);
if (article==null || !Article.DEL_FLAG_NORMAL.equals(article.getDelFlag())){
return "error/404";
}
// 文章阅读次数+1
articleService.updateHitsAddOne(contentId);
// 获取推荐文章列表
List<Object[]> relationList = articleService.findByIds(articleDataService.get(article.getId()).getRelation());
// 将数据传递到视图
model.addAttribute("category", categoryService.get(article.getCategory().getId()));
model.addAttribute("categoryList", categoryList);
article.setArticleData(articleDataService.get(article.getId()));
model.addAttribute("article", article);
model.addAttribute("relationList", relationList);
CmsUtils.addViewConfigAttribute(model, article.getCategory());
CmsUtils.addViewConfigAttribute(model, article.getViewConfig());
Site site = siteService.get(category.getSite().getId());
model.addAttribute("site", site);
// return "modules/cms/front/themes/"+category.getSite().getTheme()+"/"+getTpl(article);
return "modules/cms/front/themes/"+site.getTheme()+"/"+getTpl(article);
}
return "error/404";
}
/**
* 内容评论
*/
@RequestMapping(value = "comment", method=RequestMethod.GET)
public String comment(String theme, Comment comment, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<Comment> page = new Page<Comment>(request, response);
Comment c = new Comment();
c.setCategory(comment.getCategory());
c.setContentId(comment.getContentId());
c.setDelFlag(Comment.DEL_FLAG_NORMAL);
page = commentService.findPage(page, c);
model.addAttribute("page", page);
model.addAttribute("comment", comment);
return "modules/cms/front/themes/"+theme+"/frontComment";
}
/**
* 内容评论保存
*/
@ResponseBody
@RequestMapping(value = "comment", method=RequestMethod.POST)
public String commentSave(Comment comment, String validateCode,@RequestParam(required=false) String replyId, HttpServletRequest request) {
if (StringUtils.isNotBlank(validateCode)){
if (ValidateCodeServlet.validate(request, validateCode)){
if (StringUtils.isNotBlank(replyId)){
Comment replyComment = commentService.get(replyId);
if (replyComment != null){
comment.setContent("<div class=\"reply\">"+replyComment.getName()+":<br/>"
+replyComment.getContent()+"</div>"+comment.getContent());
}
}
comment.setIp(request.getRemoteAddr());
comment.setCreateDate(new Date());
comment.setDelFlag(Comment.DEL_FLAG_AUDIT);
commentService.save(comment);
return "{result:1, message:'提交成功。'}";
}else{
return "{result:2, message:'验证码不正确。'}";
}
}else{
return "{result:2, message:'验证码不能为空。'}";
}
}
/**
* 站点地图
*/
@RequestMapping(value = "map-{siteId}${urlSuffix}")
public String map(@PathVariable String siteId, Model model) {
Site site = CmsUtils.getSite(siteId!=null?siteId:Site.defaultSiteId());
model.addAttribute("site", site);
return "modules/cms/front/themes/"+site.getTheme()+"/frontMap";
}
private String getTpl(Article article){
if(StringUtils.isBlank(article.getCustomContentView())){
String view = null;
Category c = article.getCategory();
boolean goon = true;
do{
if(StringUtils.isNotBlank(c.getCustomContentView())){
view = c.getCustomContentView();
goon = false;
}else if(c.getParent() == null || c.getParent().isRoot()){
goon = false;
}else{
c = c.getParent();
}
}while(goon);
return StringUtils.isBlank(view) ? Article.DEFAULT_TEMPLATE : view;
}else{
return article.getCustomContentView();
}
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web.front;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.jeespring.common.config.Global;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Guestbook;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.GuestbookService;
import com.jeespring.modules.cms.utils.CmsUtils;
/**
* 留言板Controller
* @author JeeSpring
* @version 2013-3-15
*/
@Controller
@RequestMapping(value = "${frontPath}/guestbook")
public class FrontGuestbookController extends AbstractBaseController {
@Autowired
private GuestbookService guestbookService;
/**
* 留言板
*/
@RequestMapping(value = "", method=RequestMethod.GET)
public String guestbook(@RequestParam(required=false, defaultValue="1") Integer pageNo,
@RequestParam(required=false, defaultValue="30") Integer pageSize, Model model) {
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
Page<Guestbook> page = new Page<Guestbook>(pageNo, pageSize);
Guestbook guestbook = new Guestbook();
guestbook.setDelFlag(Guestbook.DEL_FLAG_NORMAL);
page = guestbookService.findPage(page, guestbook);
model.addAttribute("page", page);
return "modules/cms/front/themes/"+site.getTheme()+"/frontGuestbook";
}
/**
* 留言板-保存留言信息
*/
@RequestMapping(value = "", method=RequestMethod.POST)
public String guestbookSave(Guestbook guestbook, String validateCode, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
// if (StringUtils.isNotBlank(validateCode)){
// if (ValidateCodeServlet.validate(request, validateCode)){
guestbook.setIp(request.getRemoteAddr());
guestbook.setCreateDate(new Date());
guestbook.setDelFlag(Guestbook.DEL_FLAG_AUDIT);
guestbookService.save(guestbook);
addMessage(redirectAttributes, "提交成功,谢谢!");
// }else{
// addMessage(redirectAttributes, "验证码不正确。");
// }
// }else{
// addMessage(redirectAttributes, "验证码不能为空。");
// }
return "redirect:"+Global.getFrontPath()+"/guestbook";
}
}
/**
* Copyright &copy; 2012-2016 <a href="https://gitee.com/JeeHuangBingGui/jeeSpringCloud">JeeSpring</a>All rights reserved.
*/
package com.jeespring.modules.cms.web.front;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.jeespring.common.persistence.Page;
import com.jeespring.common.utils.StringUtils;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.entity.Article;
import com.jeespring.modules.cms.entity.Guestbook;
import com.jeespring.modules.cms.entity.Site;
import com.jeespring.modules.cms.service.ArticleService;
import com.jeespring.modules.cms.service.GuestbookService;
import com.jeespring.modules.cms.utils.CmsUtils;
import com.jeespring.modules.sys.utils.UserUtils;
/**
* 网站搜索Controller
* @author JeeSpring
* @version 2013-5-29
*/
@Controller
@RequestMapping(value = "${frontPath}/search")
public class FrontSearchController extends AbstractBaseController{
@Autowired
private ArticleService articleService;
@Autowired
private GuestbookService guestbookService;
/**
* 全站搜索
*/
@RequestMapping(value = "")
public String search(String t, @RequestParam(required=false) String q, @RequestParam(required=false) String qand, @RequestParam(required=false) String qnot,
@RequestParam(required=false) String a, @RequestParam(required=false) String cid, @RequestParam(required=false) String bd,
@RequestParam(required=false) String ed, HttpServletRequest request, HttpServletResponse response, Model model) {
long start = System.currentTimeMillis();
Site site = CmsUtils.getSite(Site.defaultSiteId());
model.addAttribute("site", site);
// 重建索引(需要超级管理员权限)
if ("cmd:reindex".equals(q)){
if (UserUtils.getUser().isAdmin()){
// 文章模型
if (StringUtils.isBlank(t) || "article".equals(t)){
articleService.createIndex();
}
// 留言模型
else if ("guestbook".equals(t)){
guestbookService.createIndex();
}
model.addAttribute("message", "重建索引成功,共耗时 " + (System.currentTimeMillis() - start) + "毫秒。");
}else{
model.addAttribute("message", "你没有执行权限。");
}
}
// 执行检索
else{
String qStr = StringUtils.replace(StringUtils.replace(q, ",", " "), ", ", " ");
// 如果是高级搜索
if ("1".equals(a)){
if (StringUtils.isNotBlank(qand)){
qStr += " +" + StringUtils.replace(StringUtils.replace(StringUtils.replace(qand, ",", " "), ", ", " "), " ", " +");
}
if (StringUtils.isNotBlank(qnot)){
qStr += " -" + StringUtils.replace(StringUtils.replace(StringUtils.replace(qnot, ",", " "), ", ", " "), " ", " -");
}
}
// 文章检索
if (StringUtils.isBlank(t) || "article".equals(t)){
Page<Article> page = articleService.search(new Page<Article>(request, response), qStr, cid, bd, ed);
page.setMessage("匹配结果,共耗时 " + (System.currentTimeMillis() - start) + "毫秒。");
model.addAttribute("page", page);
}
// 留言检索
else if ("guestbook".equals(t)){
Page<Guestbook> page = guestbookService.search(new Page<Guestbook>(request, response), qStr, bd, ed);
page.setMessage("匹配结果,共耗时 " + (System.currentTimeMillis() - start) + "毫秒。");
model.addAttribute("page", page);
}
}
model.addAttribute("t", t);// 搜索类型
model.addAttribute("q", q);// 搜索关键字
model.addAttribute("qand", qand);// 包含以下全部的关键词
model.addAttribute("qnot", qnot);// 不包含以下关键词
model.addAttribute("cid", cid);// 搜索类型
return "modules/cms/front/themes/"+site.getTheme()+"/frontSearch";
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment