Package com.jeecms.cms.manager.assist.impl

Source Code of com.jeecms.cms.manager.assist.impl.CmsVoteTopicMngImpl

package com.jeecms.cms.manager.assist.impl;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeecms.cms.dao.assist.CmsVoteTopicDao;
import com.jeecms.cms.entity.assist.CmsVoteItem;
import com.jeecms.cms.entity.assist.CmsVoteTopic;
import com.jeecms.cms.entity.main.CmsUser;
import com.jeecms.cms.manager.assist.CmsVoteItemMng;
import com.jeecms.cms.manager.assist.CmsVoteRecordMng;
import com.jeecms.cms.manager.assist.CmsVoteTopicMng;
import com.jeecms.common.hibernate3.Updater;
import com.jeecms.common.page.Pagination;

@Service
@Transactional
public class CmsVoteTopicMngImpl implements CmsVoteTopicMng {
  @Transactional(readOnly = true)
  public Pagination getPage(Integer siteId, int pageNo, int pageSize) {
    Pagination page = dao.getPage(siteId, pageNo, pageSize);
    return page;
  }

  @Transactional(readOnly = true)
  public CmsVoteTopic findById(Integer id) {
    CmsVoteTopic entity = dao.findById(id);
    return entity;
  }

  @Transactional(readOnly = true)
  public CmsVoteTopic getDefTopic(Integer siteId) {
    return dao.getDefTopic(siteId);
  }

  public CmsVoteTopic save(CmsVoteTopic bean, List<CmsVoteItem> items) {
    int totalCount = 0;
    for (CmsVoteItem item : items) {
      if (item.getVoteCount() != null) {
        totalCount += item.getVoteCount();
      }
    }
    bean.setTotalCount(totalCount);
    bean.init();
    dao.save(bean);
    cmsVoteItemMng.save(items, bean);
    return bean;
  }

  public CmsVoteTopic update(CmsVoteTopic bean, Collection<CmsVoteItem> items) {
    Updater<CmsVoteTopic> updater = new Updater<CmsVoteTopic>(bean);
    updater.include(CmsVoteTopic.PROP_START_TIME);
    updater.include(CmsVoteTopic.PROP_END_TIME);
    bean = dao.updateByUpdater(updater);
    int totalCount = 0;
    for (CmsVoteItem item : items) {
      totalCount += item.getVoteCount();
    }
    bean.setTotalCount(totalCount);
    cmsVoteItemMng.update(items, bean);
    return bean;
  }

  public CmsVoteTopic vote(Integer topicId, Integer[] itemIds, CmsUser user,
      String ip, String cookie) {
    CmsVoteTopic topic = findById(topicId);
    Set<CmsVoteItem> items = topic.getItems();
    int totalCount = topic.getTotalCount();
    for (CmsVoteItem item : items) {
      if (ArrayUtils.contains(itemIds, item.getId())) {
        item.setVoteCount(item.getVoteCount() + 1);
        totalCount++;
      }
    }
    topic.setTotalCount(totalCount);
    // 如果需要限制投票,则需保存投票记录。
    if ((topic.getRepeateHour() == null || topic.getRepeateHour() > 0)
        && (topic.getRestrictMember() || topic.getRestrictIp() || topic
            .getRestrictCookie())) {
      cmsVoteRecordMng.save(topic, user, ip, cookie);
    }
    return topic;
  }

  public CmsVoteTopic deleteById(Integer id) {
    CmsVoteTopic bean = dao.deleteById(id);
    return bean;
  }

  public CmsVoteTopic[] deleteByIds(Integer[] ids) {
    CmsVoteTopic[] beans = new CmsVoteTopic[ids.length];
    for (int i = 0, len = ids.length; i < len; i++) {
      beans[i] = deleteById(ids[i]);
    }
    return beans;
  }

  private CmsVoteItemMng cmsVoteItemMng;
  private CmsVoteRecordMng cmsVoteRecordMng;
  private CmsVoteTopicDao dao;

  @Autowired
  public void setCmsVoteItemMng(CmsVoteItemMng cmsVoteItemMng) {
    this.cmsVoteItemMng = cmsVoteItemMng;
  }

  @Autowired
  public void setCmsVoteRecordMng(CmsVoteRecordMng cmsVoteRecordMng) {
    this.cmsVoteRecordMng = cmsVoteRecordMng;
  }

  @Autowired
  public void setDao(CmsVoteTopicDao dao) {
    this.dao = dao;
  }

}
TOP

Related Classes of com.jeecms.cms.manager.assist.impl.CmsVoteTopicMngImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.