package com.ym.mec.cms.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ym.mec.cms.controller.queryinfo.NewsInformationQueryInfo;
import com.ym.mec.cms.dal.entity.NewsStatusEnum;
import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.page.QueryInfo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ym.mec.cms.dal.dao.SysNewsInformationDao;
import com.ym.mec.cms.dal.entity.SysNewsInformation;
import com.ym.mec.cms.service.SysNewsInformationService;
import com.ym.mec.common.dal.BaseDAO;
import com.ym.mec.common.service.impl.BaseServiceImpl;
import com.ym.mec.util.collection.MapUtil;

@Service
public class SysNewsInformationServiceImpl extends BaseServiceImpl<Long, SysNewsInformation> implements SysNewsInformationService {

	@Autowired
	private SysNewsInformationDao sysNewsInformationDao;

	@Override
	public BaseDAO<Long, SysNewsInformation> getDAO() {
		return sysNewsInformationDao;
	}

	@Override
	public List<SysNewsInformation> queryByType(Integer type) {
		return sysNewsInformationDao.queryByType(type);
	}

	@Override
	public boolean deleteWithLogical(Long id) {
		sysNewsInformationDao.deleteWithLogical(id);
		return true;
	}

	@Override
	public Map<String,PageInfo<SysNewsInformation>> getHomeList(NewsInformationQueryInfo queryInfo) {
		//1精彩活动，2热门资讯,3banner类型
		Map<String,PageInfo<SysNewsInformation>> homeList = new HashMap<>();
		queryInfo.setStatus(NewsStatusEnum.SHOW);
		
		if(queryInfo.getTenantId() == null){
			queryInfo.setTenantId(1);
		}
		
		String memo = queryInfo.getMemo();
		
		Map<String, Object> params = new HashMap<String, Object>();
		MapUtil.populateMap(params, queryInfo);

		queryInfo.setType(3);
		int count = sysNewsInformationDao.queryHomeCount(params);
		if(count == 0){
			queryInfo.setMemo(null);
		}
		homeList.put("banner",queryHomePage(queryInfo));
		
		queryInfo.setMemo(memo);
		queryInfo.setType(6);
		count = sysNewsInformationDao.queryHomeCount(params);
		if(count == 0){
			queryInfo.setMemo(null);
		}
		homeList.put("app",queryHomePage(queryInfo));
		
		queryInfo.setMemo(null);
		queryInfo.setType(1);
		homeList.put("active",queryHomePage(queryInfo));
		queryInfo.setType(2);
		homeList.put("hot",queryHomePage(queryInfo));
		queryInfo.setType(5);
		homeList.put("flash",queryHomePage(queryInfo));
		return homeList;
	}
	
	private PageInfo<SysNewsInformation> queryHomePage(QueryInfo queryInfo) {
		PageInfo<SysNewsInformation> pageInfo = new PageInfo<SysNewsInformation>(queryInfo.getPage(), queryInfo.getRows());
		Map<String, Object> params = new HashMap<String, Object>();
		MapUtil.populateMap(params, queryInfo);
		
		List<SysNewsInformation> dataList = null;
		int count = sysNewsInformationDao.queryHomeCount(params);
		if (count > 0) {
			pageInfo.setTotal(count);
			params.put("offset", pageInfo.getOffset());
			dataList = sysNewsInformationDao.queryHomePage(params);
		}
		if (count == 0) {
			dataList = new ArrayList<SysNewsInformation>();
		}
		pageInfo.setRows(dataList);
		return pageInfo;
	}

}