MessageRemindTask.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.jsjty.task;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.concurrent.Executors;
  6. import java.util.concurrent.ScheduledExecutorService;
  7. import java.util.concurrent.TimeUnit;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  12. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  13. import org.springframework.stereotype.Service;
  14. import com.jsjty.bean.ChatCmd;
  15. import com.jsjty.bean.CmdConsts;
  16. import com.jsjty.bean.MsgBean;
  17. import com.jsjty.core.BusinessServer;
  18. import com.jsjty.task.base.BaseTask;
  19. /**
  20. * 天气抓取服务
  21. *
  22. * @author 袁晓冬
  23. *
  24. */
  25. @Service
  26. public class MessageRemindTask implements BaseTask {
  27. private Logger logger = LoggerFactory.getLogger(MessageRemindTask.class);
  28. @Autowired
  29. private BusinessServer businessServer;
  30. private ScheduledExecutorService executor;
  31. @Autowired
  32. private NamedParameterJdbcTemplate jdbcTemplate;
  33. BeanPropertyRowMapper<MsgBean> beanPropertyRowMapper = BeanPropertyRowMapper.newInstance(MsgBean.class);
  34. public MessageRemindTask() {
  35. executor = Executors.newScheduledThreadPool(5);
  36. }
  37. @Override
  38. public int doFetch() {
  39. logger.info("消息抓取开始......");
  40. String sql = "SELECT ID, CHATID, TITLE, CONTENT, SENDTIME, STATUS FROM T_MESSAGE WHERE STATUS='0' and SENDTIME<CURRENT_TIMESTAMP+300000 ";
  41. Map<String, Object> params = new HashMap<String, Object>();
  42. List<MsgBean> msgs = jdbcTemplate.query(sql, params, beanPropertyRowMapper);
  43. for (MsgBean msg : msgs) {
  44. ChatCmd send = new ChatCmd();
  45. send.setCode(CmdConsts.MSG_REMIND);
  46. if (msg.getChatid() > 0) {
  47. send.setData(msg);
  48. MessageSendService mss = new MessageSendService();
  49. mss.setBusinessServer(businessServer);
  50. mss.setMsg(msg);
  51. long delay = msg.getSendtime().getTime() - System.currentTimeMillis();
  52. if (delay < 0) {
  53. delay = 0;
  54. }
  55. executor.schedule(mss, delay, TimeUnit.MILLISECONDS);
  56. }
  57. }
  58. logger.info("消息抓取结束。");
  59. return msgs.size();
  60. }
  61. @Override
  62. public String getName() {
  63. return "消息抓取服务";
  64. }
  65. }