| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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<MsgBean> 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<CURRENT_TIMESTAMP+300000 ";
- Map<String, Object> params = new HashMap<String, Object>();
- List<MsgBean> 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 "消息抓取服务";
- }
- }
|