package com.jsjty.task; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Service; import com.jsjty.bean.ChatCmd; import com.jsjty.bean.CmdConsts; import com.jsjty.bean.MsgBean; import com.jsjty.core.BusinessServer; import com.jsjty.task.base.BaseTask; /** * 天气抓取服务 * * @author 袁晓冬 * */ @Service public class MessageRemindTask implements BaseTask { private Logger logger = LoggerFactory.getLogger(MessageRemindTask.class); @Autowired private BusinessServer businessServer; private ScheduledExecutorService executor; @Autowired private NamedParameterJdbcTemplate jdbcTemplate; BeanPropertyRowMapper beanPropertyRowMapper = BeanPropertyRowMapper.newInstance(MsgBean.class); public MessageRemindTask() { executor = Executors.newScheduledThreadPool(5); } @Override public int doFetch() { logger.info("消息抓取开始......"); String sql = "SELECT ID, CHATID, TITLE, CONTENT, SENDTIME, STATUS FROM T_MESSAGE WHERE STATUS='0' and SENDTIME params = new HashMap(); List msgs = jdbcTemplate.query(sql, params, beanPropertyRowMapper); for (MsgBean msg : msgs) { ChatCmd send = new ChatCmd(); send.setCode(CmdConsts.MSG_REMIND); if (msg.getChatid() > 0) { send.setData(msg); MessageSendService mss = new MessageSendService(); mss.setBusinessServer(businessServer); mss.setMsg(msg); long delay = msg.getSendtime().getTime() - System.currentTimeMillis(); if (delay < 0) { delay = 0; } executor.schedule(mss, delay, TimeUnit.MILLISECONDS); } } logger.info("消息抓取结束。"); return msgs.size(); } @Override public String getName() { return "消息抓取服务"; } }