package com.jspxcms.core.service.impl;
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jspxcms.core.domain.ScoreBoard;
import com.jspxcms.core.domain.ScoreItem;
import com.jspxcms.core.listener.ScoreItemDeleteListener;
import com.jspxcms.core.repository.ScoreBoardDao;
import com.jspxcms.core.service.ScoreBoardService;
import com.jspxcms.core.service.ScoreItemService;
@Service
@Transactional(readOnly = true)
public class ScoreBoardServiceImpl implements ScoreBoardService,
ScoreItemDeleteListener {
public List<ScoreBoard> findList(String ftype, Integer fid) {
return dao.findByFtypeAndFid(ftype, fid);
}
public ScoreBoard findOne(String ftype, Integer fid, Integer itemId) {
return dao.findByFtypeAndFidAndItemId(ftype, fid, itemId);
}
public ScoreBoard get(Integer id) {
return dao.findOne(id);
}
@Transactional
public ScoreBoard scoring(String ftype, Integer fid, Integer itemId) {
ScoreBoard board = dao.findByFtypeAndFidAndItemId(ftype, fid, itemId);
if (board == null) {
board = new ScoreBoard();
ScoreItem item = scoreItemService.get(itemId);
board.setItem(item);
board.setFtype(ftype);
board.setFid(fid);
board.setVotes(1);
save(board);
} else {
board.setVotes(board.getVotes() + 1);
}
return board;
}
@Transactional
public ScoreBoard save(ScoreBoard bean) {
bean.applyDefaultValue();
bean = dao.save(bean);
return bean;
}
@Transactional
public ScoreBoard update(ScoreBoard bean) {
bean.applyDefaultValue();
bean = dao.save(bean);
return bean;
}
@Transactional
public ScoreBoard delete(Integer id) {
ScoreBoard entity = dao.findOne(id);
dao.delete(entity);
return entity;
}
@Transactional
public ScoreBoard[] delete(Integer[] ids) {
ScoreBoard[] beans = new ScoreBoard[ids.length];
for (int i = 0; i < ids.length; i++) {
beans[i] = delete(ids[i]);
}
return beans;
}
@Transactional
public int deleteByItemId(Integer itemId) {
return dao.deleteByItemId(Arrays.asList(new Integer[] { itemId }));
}
public void preScoreItemDelete(Integer[] ids) {
if (ids == null) {
return;
}
dao.deleteByItemId(Arrays.asList(ids));
}
private ScoreItemService scoreItemService;
@Autowired
public void setScoreItemService(ScoreItemService scoreItemService) {
this.scoreItemService = scoreItemService;
}
private ScoreBoardDao dao;
@Autowired
public void setDao(ScoreBoardDao dao) {
this.dao = dao;
}
}