package com.jeff.tianti.cms.dao;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

import com.jeff.tianti.cms.dto.ArticleQueryDTO;
import com.jeff.tianti.cms.dto.CurrentArticleInfoDTO;
import com.jeff.tianti.cms.entity.Article;
import com.jeff.tianti.common.dao.CustomBaseSqlDaoImpl;
import com.jeff.tianti.common.entity.PageModel;
/**
 * @author xujianfang
 * @desc ArticleDaoImpl类 
 * @date 2017-03-16
 */

public class ArticleDaoImpl extends CustomBaseSqlDaoImpl implements ArticleDaoCustom  {

    public PageModel<Article> queryArticlePage(ArticleQueryDTO articleQueryDTO){
    	 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Map<String,Object> map = new HashMap<String,Object>();
         StringBuilder hql = new StringBuilder();
         hql.append("select t from Article t where 1=1 ");
         if(articleQueryDTO != null){
        	 if(StringUtils.isNotBlank(articleQueryDTO.getRootColumnId())){
        		 hql.append(" and t.rootColumnInfo.id = :rootColumnId ");
        		 map.put("rootColumnId", articleQueryDTO.getRootColumnId());        		 
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getColumnId())){
        		 hql.append(" and t.columnInfo.id = :columnId ");
            	 map.put("columnId", articleQueryDTO.getColumnId());
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getTitle())){
        		 hql.append(" and t.title like  :title ");
        		 map.put("title", "%"+articleQueryDTO.getTitle()+"%");
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getPublisher())){
        		 hql.append(" and t.publisher like  :publisher ");
        		 map.put("publisher", "%"+articleQueryDTO.getPublisher()+"%");
        	 }
		     if(StringUtils.isNotBlank(articleQueryDTO.getDeleteFlag())){
        		 hql.append(" and t.deleteFlag = :deleteFlag ");
            	         map.put("deleteFlag", articleQueryDTO.getDeleteFlag());
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getStartDate())){
        		 hql.append(" and t.createDate  >= :startDate ");
        		 try {
					map.put("startDate",sdf.parse(articleQueryDTO.getStartDate()));
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getEndDate())){
        		 hql.append(" and t.createDate  <= :endDate ");
        		 try {
					map.put("endDate",sdf.parse(articleQueryDTO.getEndDate()));
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	 }
        	 if(articleQueryDTO.getIsFront() != null && articleQueryDTO.getIsFront()){
        		 //前端默认查询审核通过的且未删除的记录,且按照置顶和时间降序排序
                 hql.append(" and t.isAudit =1  order by t.isTop desc,t.createDate desc ");
        	 }else{
        		 if(StringUtils.isNotBlank(articleQueryDTO.getType())){
            		 if(articleQueryDTO.getType().equals("laji")){
            			 hql.append(" and t.deleteFlag =1 ");
            		 }else if(articleQueryDTO.getType().equals("zhiding")){
            			 hql.append(" and t.isTop =1 ");
            		 }
                     hql.append(" order by t.createDate desc ");
            	 }
        	 }
         }
         return this.queryForPageWithParams(hql.toString(),map,articleQueryDTO.getCurrentPage(),articleQueryDTO.getPageSize());
    }

    public List<Article> queryArticleList(ArticleQueryDTO articleQueryDTO){
    	 List<Article> articleList = null;
         Map<String,Object> map = new HashMap<String,Object>();
         StringBuilder hql = new StringBuilder();
         hql.append("select t from Article t where 1=1 ");
         if(articleQueryDTO != null){
        	 if(StringUtils.isNotBlank(articleQueryDTO.getColumnId())){
        		 hql.append(" and t.columnInfo.id = :columnId ");
        		 map.put("columnId", articleQueryDTO.getColumnId());
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getTitle())){
        		 hql.append(" and t.title like = :title ");
        		 map.put("title", "%"+articleQueryDTO.getTitle()+"%");
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getPublisher())){
        		 hql.append(" and t.publisher like = :publisher ");
        		 map.put("publisher", "%"+articleQueryDTO.getPublisher()+"%");
        	 }
		     if(StringUtils.isNotBlank(articleQueryDTO.getDeleteFlag())){
        		 hql.append(" and t.deleteFlag = :deleteFlag ");
            	         map.put("deleteFlag", articleQueryDTO.getDeleteFlag());
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getStartDate())){
        		 hql.append(" and t.createDate  >= :startDate ");
        		 map.put("startDate",articleQueryDTO.getStartDate());
        	 }
        	 if(StringUtils.isNotBlank(articleQueryDTO.getEndDate())){
        		 hql.append(" and t.createDate  <= :endDate ");
        		 map.put("endDate",articleQueryDTO.getEndDate());
        	 }
        	 if(articleQueryDTO.getIsFront() != null && articleQueryDTO.getIsFront()){
        		 //前端默认查询审核通过的且未删除的记录,且按照置顶和时间降序排序
                 hql.append(" and t.isAudit =1  order by t.isTop desc,t.createDate desc ");
        	 }else{
        		 if(StringUtils.isNotBlank(articleQueryDTO.getType())){
            		 if(articleQueryDTO.getType().equals("laji")){
            			 hql.append(" and t.deleteFlag =1 ");
            		 }else if(articleQueryDTO.getType().equals("zhiding")){
            			 hql.append(" and t.isTop =1 ");
            		 }
                     hql.append(" order by t.createDate desc ");
            	 }
        	 }
         }
         if(articleQueryDTO.getTop() != null){
        	 PageModel pageModel = this.queryForPageWithParams(hql.toString(),map,0, articleQueryDTO.getTop());
        	 if(pageModel != null){
        		 articleList = pageModel.getList();
        	 }
         }else{
        	 articleList = this.queryByMapParams(hql.toString(),map);
         }
         return articleList;
    }
    
    public List<Map<String, Object>> queryStatisMapList(ArticleQueryDTO articleQueryDTO){
    	String sql = " select count(1) as totalCount,(select count(1) from cms_article where is_top=1 and delete_flag = '0') as zhidingCount,(select count(1) from cms_article where is_audit=1 and delete_flag = '0') as shenheCount,(select count(1) from cms_article where delete_flag='1') as deleteCount from cms_article a  ";
    	return this.querySqlObjects(sql);
    }
    
    public List<Article> queryNextArticleList(CurrentArticleInfoDTO currentArticleInfoDTO){
    	Map<String,Object> map = new HashMap<String,Object>();
    	StringBuilder hql = new StringBuilder();
    	hql.append(" select a from Article a where 1=1  ");
    	if(StringUtils.isNotBlank(currentArticleInfoDTO.getArticleId())){
    		hql.append(" and a.id <> :articleId ");
    		map.put("articleId", currentArticleInfoDTO.getArticleId());
    	}
    	if(StringUtils.isNotBlank(currentArticleInfoDTO.getColumnId())){
    		hql.append(" and a.columnInfo.id = :columnInfoId ");
    		map.put("columnInfoId", currentArticleInfoDTO.getColumnId());
    	}
    	if(currentArticleInfoDTO.getArticleDate() != null){
    		hql.append(" and a.createDate < :date ");
    		map.put("date", currentArticleInfoDTO.getArticleDate());
    		hql.append(" order by a.createDate desc ");
    	}else if(currentArticleInfoDTO.getOrderNo() != null){
    		hql.append(" and a.orderNo < :orderNo ");
    		map.put("orderNo", currentArticleInfoDTO.getOrderNo());
    		hql.append(" order by a.orderNo desc ");
    	}
    	return this.queryByMapParams(hql.toString(), map);
    }
    
    public List<Article> queryPreArticleList(CurrentArticleInfoDTO currentArticleInfoDTO){
    	Map<String,Object> map = new HashMap<String,Object>();
    	StringBuilder hql = new StringBuilder();
    	hql.append(" select a from Article a where 1=1  ");
    	if(StringUtils.isNotBlank(currentArticleInfoDTO.getArticleId())){
    		hql.append(" and a.id <> :articleId ");
    		map.put("articleId", currentArticleInfoDTO.getArticleId());
    	}
    	if(StringUtils.isNotBlank(currentArticleInfoDTO.getColumnId())){
    		hql.append(" and a.columnInfo.id = :columnInfoId ");
    		map.put("columnInfoId", currentArticleInfoDTO.getColumnId());
    	}
    	if(currentArticleInfoDTO.getArticleDate() != null){
    		hql.append(" and a.createDate > :date ");
    		map.put("date", currentArticleInfoDTO.getArticleDate());
    		hql.append(" order by a.createDate asc ");
    	}else if(currentArticleInfoDTO.getOrderNo() != null){
    		hql.append(" and a.orderNo > :orderNo ");
    		map.put("orderNo", currentArticleInfoDTO.getOrderNo());
    		hql.append(" order by a.orderNo asc ");
    	}
    	return this.queryByMapParams(hql.toString(), map);
    }


}
最近下载更多
微信网友_6658091507814400  LV3 2023年10月10日
微信网友_6602457430806528  LV6 2023年9月21日
哇塞塞哈哈哈  LV8 2023年5月4日
我也不知道谁的  LV3 2023年3月28日
GeminiLong  LV6 2022年12月22日
352601466  LV2 2022年9月20日
ma752060990  LV11 2022年9月17日
testuser1234567  LV24 2022年6月15日
wanglinddad  LV55 2022年3月15日
tiansitong  LV14 2022年3月9日
最近浏览更多
china_hdh  LV7 昨天
刘先生-OL  LV13 4月8日
暂无贡献等级
哪里的完整版  LV8 4月1日
星星没有答案 3月27日
暂无贡献等级
monster_001  LV3 2月27日
zyfile  LV1 1月9日
sjwc88  LV3 2024年12月4日
剑苍生  LV2 2024年11月17日
solocare  LV4 2024年9月2日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友