Skip to content

Commit

Permalink
内容管理模块增加栏目信息量统计(仅文章模型)
Browse files Browse the repository at this point in the history
  • Loading branch information
think-gem committed May 22, 2013
1 parent 96fa12a commit 62da745
Show file tree
Hide file tree
Showing 16 changed files with 310 additions and 48 deletions.
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#JeeSite 企业信息管理系统基础框架
# JeeSite 企业信息管理系统基础框架

##框架简介
## 框架简介

JeeSite 是一个 **开源的企业信息管理系统** 基础框架。主要定位于“企业信息管理”领域,可用作企业信息管理类系统、网站后台管理类系统等。JeeSite是非常强调开发的高效性、健壮性和安全性的。

Expand All @@ -10,7 +10,7 @@ JeeSite 已内置一系列企业信息管理系统的基础功能,目前包括

JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、服务器端验证、数据字典、当前组织机构数据(用户、机构、区域)以及其它常用小工具等。另外还提供一个基于本基础框架的 **代码生成器** ,为你生成基本模块代码,如果你使用了JeeSite基础框架,就可以很快速开发出优秀的信息管理系统。

##为何选择
## 为何选择

1. 使用 **Apache License 2.0** 协议,源代码完全开源,无商业限制。
2. 使用目前最主流的J2EE开发框架,简单易学,学习成本低。
Expand All @@ -21,12 +21,13 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
7. 提供常用工具类封装,日志、缓存、验证、字典、组织机构等,常用标签(taglib),获取当前组织机构、字典等数据。
8. 完全兼容目前最流行浏览器(IE6、IE7+、Firefox、Chrome)。

##使用技术
## 技术选型

1、Services相关

* Core Framework:Spring Framework 3.2。
* Security Framework:Apache Shiro 1.2。
* Workflow Engine:Activit 5。

2、Web相关

Expand All @@ -53,7 +54,7 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
* Full-text search:Hibernate Search 4.2(Apache Lucene 3.6)、IK Analyzer 2012_u6中文分词
* Log Manager:Log4j 1.2

##安全考虑
## 安全考虑

1. 开发语言:系统采用Java 语言开发,具有卓越的通用性、高效性、平台移植性和安全性。
2. 分层设计:(数据库层,数据访问层,业务逻辑层,展示层)层次清楚,低耦合,各层必须通过接口才能接入并进行参数校验(如:在展示层不可直接操作数据库),保证数据操作的安全。
Expand All @@ -62,7 +63,7 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
5. 密码加密:登录用户密码进行SHA1散列加密,此加密方法是不可逆的。保证密文泄露后的安全问题。
6. 强制访问:系统对所有管理端链接都进行用户身份权限验证,防止用户

##快速体验
## 快速体验

### **在线体验(感谢刘杰提供):** <http://demo.jeesite.com:1234/jeesite>

Expand All @@ -75,16 +76,17 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
5. 运行bin\jetty.bat,启动Web服务器(第一次运行,需要下载依赖jar包,请耐心等待)。
6. 最高管理员账号,用户名:thinkgem 密码:admin

##更多文档
## 更多文档

* [JeeSite介绍演示.docx](https://github.com/thinkgem/jeesite/raw/master/doc/JeeSite About.docx)
* [JeeSite开发手册.docx](https://github.com/thinkgem/jeesite/raw/master/doc/JeeSite Developer.docx)

## 交流、反馈、参与贡献?
## 如何交流、反馈、参与贡献?

* QQ Group:127515876
* E-mail:thinkgem@163.com
* Github:http://thinkgem.github.com/jeesite
* E-mail:<mailto:thinkgem@163.com>
* Github:<http://thinkgem.github.com/jeesite>
* 支持JeeSite:<http://jeesite.com/donation.html>

如果你想参与进来共同完善它或有更好的建议,请联系我吧(^_^)。

Expand All @@ -94,6 +96,5 @@ JeeSite 提供了常用工具进行封装,包括日志工具、缓存工具、
* 模块管理功能:可方便增减模块,如内容管理模块不需要,可直接启用或停用。
* 内容管理模块:文章评论、完善内容关键字、图片模型、专题功能、会员功能。
* 添加通用模块:公告功能、内部短消息、在线列表、短信和邮件群发功能。
* 嵌入流程引擎:使用Activit5或JBPM5流程引擎 [【投票】](http://url.cn/BiuLiE)</a>。
* 公共工具封装:嵌入地图、生成报表、WebService
* 移动客户端:暂定为Android客户端开发
Binary file modified bin/refresh-db/sys/jeesite_data.xls
Binary file not shown.
Binary file modified doc/JeeSite About.docx
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,14 @@ public <E> Page<E> find(Page<E> page, String qlString, Object... parameter){
// get count
if (!page.isDisabled() && !page.isNotCount()){
String countQlString = "select count(*) " + removeSelect(removeOrders(qlString));
page.setCount(Long.valueOf(createQuery(countQlString, parameter).uniqueResult().toString()));
// page.setCount(Long.valueOf(createQuery(countQlString, parameter).uniqueResult().toString()));
Query query = createQuery(countQlString, parameter);
List<Object> list = query.list();
if (list.size() > 0){
page.setCount(Long.valueOf(list.get(0).toString()));
}else{
page.setCount(list.size());
}
if (page.getCount() < 1) {
return page;
}
Expand Down Expand Up @@ -200,8 +207,15 @@ public <E> Page<E> findBySql(Page<E> page, String sqlString, Object... parameter
public <E> Page<E> findBySql(Page<E> page, String sqlString, Class<?> resultClass, Object... parameter){
// get count
if (!page.isDisabled() && !page.isNotCount()){
String countQlString = "select count(*) " + removeSelect(removeOrders(sqlString));
page.setCount(Long.valueOf(createSqlQuery(countQlString, parameter).uniqueResult().toString()));
String countSqlString = "select count(*) " + removeSelect(removeOrders(sqlString));
// page.setCount(Long.valueOf(createSqlQuery(countSqlString, parameter).uniqueResult().toString()));
Query query = createSqlQuery(countSqlString, parameter);
List<Object> list = query.list();
if (list.size() > 0){
page.setCount(Long.valueOf(list.get(0).toString()));
}else{
page.setCount(list.size());
}
if (page.getCount() < 1) {
return page;
}
Expand Down Expand Up @@ -295,7 +309,7 @@ private void setResultTransformer(SQLQuery query, Class<?> resultClass){
private void setParameter(Query query, Object... parameter){
if (parameter != null){
for (int i=0; i<parameter.length; i++){
query.setParameter(i+1, parameter[i]);
query.setParameter(i, parameter[i]);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,12 @@ public static String getWeek() {
/**
* 日期型字符串转化为日期 格式("yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss" )
*/
public static Date parseDate(String str) {
public static Date parseDate(Object str) {
if (str == null){
return null;
}
try {
return parseDate(str, parsePatterns);
return parseDate(str.toString(), parsePatterns);
} catch (ParseException e) {
return null;
}
Expand Down
42 changes: 39 additions & 3 deletions src/main/java/com/thinkgem/jeesite/common/utils/StringUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,17 @@
/**
* 字符串工具类, 继承org.apache.commons.lang3.StringUtils类
* @author ThinkGem
* @version 2013-01-15
* @version 2013-05-22
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils {

/**
* 替换掉HTML标签
*/
public static String replaceHtml(String html) {
if (isBlank(html)){
return "";
}
String regEx = "<.+?>";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(html);
Expand Down Expand Up @@ -54,7 +57,40 @@ public static String abbr(String str, int length) {
e.printStackTrace();
}
return "";

}


public static Double toDouble(Object val){
if (val == null){
return 0D;
}
try {
return Double.valueOf(trim(val.toString()));
} catch (Exception e) {
return 0D;
}
}

public static Float toFloat(Object val){
return toDouble(val).floatValue();
}

public static Long toLong(Object val){
return toDouble(val).longValue();
}

public static Integer toInteger(Object val){
return toLong(val).intValue();
}

public static String toString(Object val){
if (val == null){
return "";
}
try {
return trim(val.toString());
} catch (Exception e) {
return "";
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public Page<Article> find(Page<Article> page, Article article) {
if (category!=null){
dc.add(Restrictions.or(
Restrictions.eq("category.id", category.getId()),
Restrictions.eq("category.parent.id", category.getId()),
// Restrictions.eq("category.parent.id", category.getId()),
Restrictions.like("category.parentIds", "%,"+category.getId()+",%")));
dc.add(Restrictions.eq("category.site.id", category.getSite().getId()));
article.setCategory(category);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/**
* Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.thinkgem.jeesite.modules.cms.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;

import com.google.common.collect.Lists;
import com.thinkgem.jeesite.common.service.BaseService;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.cms.dao.ArticleDao;
import com.thinkgem.jeesite.modules.cms.entity.Site;

/**
* 统计Service
* @author ThinkGem
* @version 2013-05-21
*/
@Service
@Transactional(readOnly = true)
public class StatsService extends BaseService {

@SuppressWarnings("unused")
private static Logger logger = LoggerFactory.getLogger(StatsService.class);

@Autowired
private ArticleDao articleDao;

public List<Map<String, Object>> article(Map<String, Object> paramMap, Model model) {

StringBuilder ql = new StringBuilder();
List<Object> ps = Lists.newArrayList();

ql.append("select new map(max(c.id) as categoryId, max(c.name) as categoryName, max(cp.id) as categoryParentId, max(cp.name) as categoryParentName,");
ql.append(" count(*) as cnt, sum(a.hits) as hits, max(a.updateDate) as updateDate, max(o.id) as officeId, max(o.name) as officeName) ");
ql.append(" from Article a join a.category c join c.office o join c.parent cp where c.site.id = ").append(Site.getCurrentSiteId());

Long categoryId = StringUtils.toLong(paramMap.get("categoryId"));
if (categoryId > 0){
ql.append(" and (c.id = ? or c.parentIds like ?)");
ps.add(categoryId);
ps.add("%,"+categoryId+",%");
}

Long officeId = StringUtils.toLong(paramMap.get("officeId"));
if (officeId > 0){
ql.append(" and (o.id = ? or o.parentIds like ?)");
ps.add(officeId);
ps.add("%,"+officeId+",%");
}

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"));
}
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"));
}
ql.append(" and a.updateDate between ? and ?");
ps.add(beginDate);
ps.add(DateUtils.addDays(endDate, 1));

ql.append(" group by c.id order by cp.sort, cp.id, c.sort, c.id");
List<Map<String, Object>> list = articleDao.find(ql.toString(), ps.toArray());
return list;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/**
* Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.thinkgem.jeesite.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.thinkgem.jeesite.common.config.Global;
import com.thinkgem.jeesite.common.web.BaseController;
import com.thinkgem.jeesite.modules.cms.service.StatsService;

/**
* 统计Controller
* @author ThinkGem
* @version 2013-5-21
*/
@Controller
@RequestMapping(value = Global.ADMIN_PATH+"/cms/stats")
public class StatsController extends BaseController {

@Autowired
private StatsService statsService;

/**
* 文章信息量
* @param map
* @param model
* @return
*/
@RequiresPermissions("cms:stats:article")
@RequestMapping(value = "article")
public String article(@RequestParam Map<String, Object> paramMap, Model model) {
List<Map<String, Object>> list = statsService.article(paramMap, model);
model.addAttribute("list", list);
model.addAttribute("paramMap", paramMap);
return "modules/cms/statsArticle";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,15 @@ public Page<User> findUser(Page<User> page, User user) {
if (user.getCompany()!=null && user.getCompany().getId()!=null){
dc.add(Restrictions.or(
Restrictions.eq("company.id", user.getCompany().getId()),
Restrictions.eq("company.parent.id", user.getCompany().getId()),
// Restrictions.eq("company.parent.id", user.getCompany().getId()),
Restrictions.like("company.parentIds", "%,"+user.getCompany().getId()+",%")
));
}
dc.createAlias("office", "office");
if (user.getOffice()!=null && user.getOffice().getId()!=null){
dc.add(Restrictions.or(
Restrictions.eq("office.id", user.getOffice().getId()),
Restrictions.eq("office.parent.id", user.getOffice().getId()),
// Restrictions.eq("office.parent.id", user.getOffice().getId()),
Restrictions.like("office.parentIds", "%,"+user.getOffice().getId()+",%")
));
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pool.maxActive=20
#product sttings
productName=JeeSite Admin
copyrightYear=2013
version=V1.0
version=V1.0.3

#admin path
adminPath=/a
Expand Down
Loading

0 comments on commit 62da745

Please sign in to comment.