Commit d3ad3768 authored by Huang's avatar Huang
Browse files

no commit message

parent b6becbcd
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";
}
}
/**
* 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 org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeespring.common.web.AbstractBaseController;
import com.jeespring.modules.cms.utils.WiexinSignUtil;
/**
* 测试Controller
* @author JeeSpring
* @version 2014-02-28
*/
@Controller
@RequestMapping(value = "${frontPath}/weixin")
public class WeixinController extends AbstractBaseController {
/**
*
* @param signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
* @param timestamp 时间戳
* @param nonce 随机数
* @param echostr 随机数
* @return
*/
@RequestMapping(value = "", method = RequestMethod.GET)
@ResponseBody
public String get(String signature, String timestamp, String nonce, String echostr, HttpServletRequest request) {
System.out.println("=============================================== get start");
for (Object o : request.getParameterMap().keySet()){
System.out.println(o + " = " + request.getParameter((String)o));
}
System.out.println("=============================================== get end");
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (WiexinSignUtil.checkSignature(signature, timestamp, nonce)) {
return echostr;
}
return "";
}
@RequestMapping(value = "", method = RequestMethod.POST)
@ResponseBody
public String post(String signature, String timestamp, String nonce, String echostr, HttpServletRequest request) {
System.out.println("=============================================== post start");
for (Object o : request.getParameterMap().keySet()){
System.out.println(o + " = " + request.getParameter((String)o));
}
System.out.println("=============================================== post end");
StringBuilder result = new StringBuilder();
result.append("<xml>" +
"<ToUserName><![CDATA[toUser]]></ToUserName>" +
"<FromUserName><![CDATA[fromUser]]></FromUserName>" +
"<CreateTime>12345678</CreateTime>" +
"<MsgType><![CDATA[text]]></MsgType>" +
"<Content><![CDATA[你好]]></Content>" +
"</xml>");
return result.toString();
}
}
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.dao;
import com.jeespring.common.persistence.InterfaceBaseDao;
import com.jeespring.modules.echarts.entity.ChinaWeatherDataBean;
import org.apache.ibatis.annotations.Mapper;
/**
* 城市气温DAO接口
* @author lgf
* @version 2016-06-02
*/
@Mapper
public interface ChinaWeatherDataBeanDao extends InterfaceBaseDao<ChinaWeatherDataBean> {
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.dao;
import com.jeespring.common.persistence.InterfaceBaseDao;
import com.jeespring.modules.echarts.entity.PieClass;
import org.apache.ibatis.annotations.Mapper;
/**
* 班级DAO接口
* @author lgf
* @version 2016-05-26
*/
@Mapper
public interface PieClassDao extends InterfaceBaseDao<PieClass> {
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.entity;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeespring.common.persistence.AbstractBaseEntity;
import com.jeespring.common.utils.excel.annotation.ExcelField;
/**
* 城市气温Entity
* @author lgf
* @version 2016-06-02
*/
public class ChinaWeatherDataBean extends AbstractBaseEntity<ChinaWeatherDataBean> {
private static final long serialVersionUID = 1L;
private Date datestr; // 日期
private Double beijingMaxTemp; // 北京最高气温
private Double beijingMinTemp; // 北京最低气温
private Double changchunMaxTemp; // 长春最高气温
private Double changchunMinTemp; // 长春最低气温
private Double shenyangMaxTemp; // 沈阳最高气温
private Double shenyangMinTemp; // 沈阳最低气温
private Double haerbinMaxTemp; // 哈尔滨最高气温
private Double haerbinMinTemp; // 哈尔滨最低气温
public ChinaWeatherDataBean() {
super();
}
public ChinaWeatherDataBean(String id){
super(id);
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelField(title="日期", align=2, sort=7)
public Date getDatestr() {
return datestr;
}
public void setDatestr(Date datestr) {
this.datestr = datestr;
}
@ExcelField(title="北京最高气温", align=2, sort=8)
public Double getBeijingMaxTemp() {
return beijingMaxTemp;
}
public void setBeijingMaxTemp(Double beijingMaxTemp) {
this.beijingMaxTemp = beijingMaxTemp;
}
@ExcelField(title="北京最低气温", align=2, sort=9)
public Double getBeijingMinTemp() {
return beijingMinTemp;
}
public void setBeijingMinTemp(Double beijingMinTemp) {
this.beijingMinTemp = beijingMinTemp;
}
@ExcelField(title="长春最高气温", align=2, sort=10)
public Double getChangchunMaxTemp() {
return changchunMaxTemp;
}
public void setChangchunMaxTemp(Double changchunMaxTemp) {
this.changchunMaxTemp = changchunMaxTemp;
}
@ExcelField(title="长春最低气温", align=2, sort=11)
public Double getChangchunMinTemp() {
return changchunMinTemp;
}
public void setChangchunMinTemp(Double changchunMinTemp) {
this.changchunMinTemp = changchunMinTemp;
}
@ExcelField(title="沈阳最高气温", align=2, sort=12)
public Double getShenyangMaxTemp() {
return shenyangMaxTemp;
}
public void setShenyangMaxTemp(Double shenyangMaxTemp) {
this.shenyangMaxTemp = shenyangMaxTemp;
}
@ExcelField(title="沈阳最低气温", align=2, sort=13)
public Double getShenyangMinTemp() {
return shenyangMinTemp;
}
public void setShenyangMinTemp(Double shenyangMinTemp) {
this.shenyangMinTemp = shenyangMinTemp;
}
@ExcelField(title="哈尔滨最高气温", align=2, sort=14)
public Double getHaerbinMaxTemp() {
return haerbinMaxTemp;
}
public void setHaerbinMaxTemp(Double haerbinMaxTemp) {
this.haerbinMaxTemp = haerbinMaxTemp;
}
@ExcelField(title="哈尔滨最低气温", align=2, sort=15)
public Double getHaerbinMinTemp() {
return haerbinMinTemp;
}
public void setHaerbinMinTemp(Double haerbinMinTemp) {
this.haerbinMinTemp = haerbinMinTemp;
}
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.entity;
import org.hibernate.validator.constraints.Length;
import com.jeespring.common.persistence.AbstractBaseEntity;
import com.jeespring.common.utils.excel.annotation.ExcelField;
/**
* 班级Entity
* @author lgf
* @version 2016-05-26
*/
public class PieClass extends AbstractBaseEntity<PieClass> {
private static final long serialVersionUID = 1L;
private String className; // 班级
private Integer num; // 人数
public PieClass() {
super();
}
public PieClass(String id){
super(id);
}
@Length(min=0, max=64, message="班级长度必须介于 0 和 64 之间")
@ExcelField(title="班级", align=2, sort=7)
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@ExcelField(title="人数", align=2, sort=8)
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.service;
import java.util.List;
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.echarts.entity.ChinaWeatherDataBean;
import com.jeespring.modules.echarts.dao.ChinaWeatherDataBeanDao;
/**
* 城市气温Service
* @author lgf
* @version 2016-06-02
*/
@Service
@Transactional(readOnly = true)
public class ChinaWeatherDataBeanService extends AbstractBaseService<ChinaWeatherDataBeanDao, ChinaWeatherDataBean> {
@Override
public ChinaWeatherDataBean get(String id) {
return super.get(id);
}
@Override
public List<ChinaWeatherDataBean> findList(ChinaWeatherDataBean chinaWeatherDataBean) {
return super.findList(chinaWeatherDataBean);
}
@Override
public Page<ChinaWeatherDataBean> findPage(Page<ChinaWeatherDataBean> page, ChinaWeatherDataBean chinaWeatherDataBean) {
return super.findPage(page, chinaWeatherDataBean);
}
@Override
@Transactional(readOnly = false)
public void save(ChinaWeatherDataBean chinaWeatherDataBean) {
super.save(chinaWeatherDataBean);
}
@Override
@Transactional(readOnly = false)
public void delete(ChinaWeatherDataBean chinaWeatherDataBean) {
super.delete(chinaWeatherDataBean);
}
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeespring.org/">JeeSpring</a> All rights reserved.
*/
package com.jeespring.modules.echarts.service;
import java.util.List;
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.echarts.entity.PieClass;
import com.jeespring.modules.echarts.dao.PieClassDao;
/**
* 班级Service
* @author JeeSpring
* @version 2016-05-26
*/
@Service
@Transactional(readOnly = true)
public class PieClassService extends AbstractBaseService<PieClassDao, PieClass> {
@Override
public PieClass get(String id) {
return super.get(id);
}
@Override
public List<PieClass> findList(PieClass pieClass) {
return super.findList(pieClass);
}
@Override
public Page<PieClass> findPage(Page<PieClass> page, PieClass pieClass) {
return super.findPage(page, pieClass);
}
@Override
@Transactional(readOnly = false)
public void save(PieClass pieClass) {
super.save(pieClass);
}
@Override
@Transactional(readOnly = false)
public void delete(PieClass pieClass) {
super.delete(pieClass);
}
}
\ No newline at end of file
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