e8437b403a1781748e7865f7735457681109ad1c.svn-base 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.chinacreator.process.job;
  2. import java.net.URLEncoder;
  3. import java.util.List;
  4. import java.util.concurrent.CountDownLatch;
  5. import java.util.concurrent.ExecutorService;
  6. import java.util.concurrent.LinkedBlockingQueue;
  7. import java.util.concurrent.ThreadPoolExecutor;
  8. import java.util.concurrent.TimeUnit;
  9. import org.apache.log4j.Logger;
  10. import org.quartz.DisallowConcurrentExecution;
  11. import org.quartz.PersistJobDataAfterExecution;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import com.chinacreator.process.dao.ActiveMango3Dao;
  14. import com.chinacreator.process.dao.ActiveMango3JSDao;
  15. import com.chinacreator.process.util.DesUtil;
  16. import com.chinacreator.process.util.SHAUtil;
  17. import com.chinacreator.process.util.URLUtil;
  18. @PersistJobDataAfterExecution
  19. @DisallowConcurrentExecution
  20. public class ActiveMango3JSJob {
  21. private static Logger log = Logger.getLogger(ActiveMango3JSJob.class);
  22. @Autowired
  23. private ActiveMango3JSDao dao;
  24. public void doProcess() throws Exception {
  25. log.info("开始查询参加过芒果3天活动");
  26. List<String> list = null;
  27. long stime = System.currentTimeMillis();
  28. try {
  29. list = dao.queryNeedSmsDeal();
  30. log.info("需要芒果3天活动===="+(list == null ? 0 : list.size()));
  31. if(list != null && list.size() > 0){
  32. CountDownLatch threadSignal = new CountDownLatch(list.size());
  33. ExecutorService executorService = new ThreadPoolExecutor(8, 15, 10L, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>(), new ThreadPoolExecutor.CallerRunsPolicy());
  34. for (String userid : list) {
  35. ActiveMango3JSService fakeidService = new ActiveMango3JSService(list.size(),threadSignal,userid,dao);
  36. executorService.execute(fakeidService);
  37. }
  38. executorService.shutdown();
  39. try {
  40. executorService.awaitTermination(1L, TimeUnit.MINUTES);
  41. } catch (InterruptedException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. log.info("电商伪码查询结束===="+((System.currentTimeMillis())-stime));
  49. }
  50. }
  51. class ActiveMango3JSService implements Runnable {
  52. private static Logger logger = Logger.getLogger(ActiveMango3JSService.class);
  53. private int totalSize;
  54. private CountDownLatch threadSignal;
  55. private String userid;
  56. private ActiveMango3JSDao dao;
  57. public ActiveMango3JSService(int totalSize,CountDownLatch threadSignal,String userid,ActiveMango3JSDao dao){
  58. this.totalSize = totalSize;
  59. this.threadSignal = threadSignal;
  60. this.userid = userid;
  61. this.dao = dao;
  62. }
  63. public void run() {
  64. long startime = System.currentTimeMillis();
  65. try {
  66. boolean flag = this.dao.queryOrderRelation16(userid);
  67. if(!flag) {
  68. try {
  69. String smsid="5003102";
  70. String key= "soews92d";
  71. String baseurl ="http://111.206.133.54/smsbusi/sms/send";
  72. String content = "【中国联通】"+this.userid+",您的芒果TV会员即将到期。订购芒果TV定向流量会员包继续享受会员权益,还可免流看视频,同时还有759元惊喜大礼包等您来拿。快来点击订购吧 https://v.wo.cn/mg16hd20";
  73. String timestamp = System.currentTimeMillis()/1000+"";
  74. String usermob = DesUtil.encode(userid, key);
  75. String sign = SHAUtil.shaEncode(smsid+usermob+timestamp+content+key).toLowerCase();
  76. usermob = URLEncoder.encode(usermob,"utf-8");
  77. content = URLEncoder.encode(content,"utf-8");
  78. String url = baseurl + "?userid="+usermob+"&smsid="+smsid+"&timestamp="+timestamp+"&sign="+sign+"&content="+content;
  79. String resp = URLUtil.get(url);
  80. System.out.println(url+","+resp);
  81. dao.sendSmsSuccess(this.userid);
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. dao.sendSmsfail(this.userid);
  85. }
  86. }else {
  87. dao.sendSmsNot(this.userid);
  88. }
  89. } catch (Exception e) {
  90. e.printStackTrace();
  91. dao.sendSmsExeception(this.userid);
  92. }
  93. threadSignal.countDown();
  94. logger.info("["+this.userid+"],["+ totalSize+"/"+(totalSize - threadSignal.getCount())+"],花费时间:"+(System.currentTimeMillis()-startime+"/ms"));
  95. }
  96. }