99966c07b10d163b45f1f34dfbd0b31577a2d13d.svn-base 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.chinacreator.process.job;
  2. import com.chinacreator.process.bean.ActivityConfigBean;
  3. import com.chinacreator.process.bean.AreaInfo;
  4. import com.chinacreator.process.bean.ContinueBean;
  5. import com.chinacreator.process.bean.ContinueLogBean;
  6. import com.chinacreator.process.dao.ActivityConfigDao;
  7. import com.chinacreator.process.dao.CallerAreacodeDao;
  8. import com.chinacreator.process.dao.ContinueOrderDao;
  9. import com.chinacreator.process.dao.DictionaryDao;
  10. import com.chinacreator.process.util.JsonUtil;
  11. import com.chinacreator.process.util.SpringUtils;
  12. import com.chinacreator.process.util.URLUtil;
  13. import org.apache.commons.lang.StringUtils;
  14. import org.apache.log4j.Logger;
  15. import org.quartz.DisallowConcurrentExecution;
  16. import org.quartz.PersistJobDataAfterExecution;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import java.sql.SQLException;
  19. import java.util.Iterator;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.concurrent.*;
  23. import java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy;
  24. @PersistJobDataAfterExecution
  25. @DisallowConcurrentExecution
  26. public class ContinueVIP {
  27. private static Logger log = Logger.getLogger(ContinueVIP.class);
  28. @Autowired
  29. private ContinueOrderDao continueOrderDao;
  30. public ContinueVIP() {
  31. }
  32. public void doProcess() throws Exception {
  33. log.info("========》续送VIP\t开始");
  34. List<ContinueBean> list = this.continueOrderDao.queryNeedVipDo();
  35. if (list != null && list.size() > 0) {
  36. log.info("========》续送VIP 数据条数:" + list.size());
  37. CountDownLatch threadSignal = new CountDownLatch(list.size());
  38. ExecutorService executorService = new ThreadPoolExecutor(40, 50, 10L, TimeUnit.MINUTES, new LinkedBlockingQueue(), new CallerRunsPolicy());
  39. Iterator var5 = list.iterator();
  40. while(var5.hasNext()) {
  41. ContinueBean continueBean = (ContinueBean)var5.next();
  42. ContinueService continueService = new ContinueService(list.size(), threadSignal, continueBean);
  43. executorService.execute(continueService);
  44. }
  45. executorService.shutdown();
  46. try {
  47. executorService.awaitTermination(1L, TimeUnit.DAYS);
  48. } catch (InterruptedException var7) {
  49. var7.printStackTrace();
  50. }
  51. }
  52. }
  53. }
  54. class ContinueService implements Runnable {
  55. private static Logger logger = Logger.getLogger("continueVip");
  56. private static Logger log = Logger.getLogger(ContinueService.class);
  57. private int totalSize;
  58. private CountDownLatch threadSignal;
  59. private ContinueBean continueBean;
  60. public ContinueService(int totalSize, CountDownLatch threadSignal, ContinueBean continueBean) {
  61. this.totalSize = totalSize;
  62. this.threadSignal = threadSignal;
  63. this.continueBean = continueBean;
  64. }
  65. @Override
  66. public void run() {
  67. ContinueLogBean logBean = new ContinueLogBean();
  68. logBean.setUserid(this.continueBean.getUserid());
  69. long startime = System.currentTimeMillis();
  70. String continueVipUrl = "";
  71. try {
  72. DictionaryDao dictionaryDao = (DictionaryDao)SpringUtils.getBean(DictionaryDao.class);
  73. continueVipUrl = dictionaryDao.getValue("continueVipUrl");
  74. } catch (Exception var18) {
  75. var18.printStackTrace();
  76. log.error("查字典表获取接口地址出现异常," + var18.getMessage());
  77. continueVipUrl = "http://10.199.99.144:8090/video-activity/continueVip?";
  78. }
  79. try {
  80. CallerAreacodeDao callerAreacodeDao = (CallerAreacodeDao)SpringUtils.getBean(CallerAreacodeDao.class);
  81. AreaInfo areaInfo = callerAreacodeDao.findByCallerhead(this.continueBean.getUserid().substring(0, 7));
  82. if (areaInfo != null) {
  83. this.continueBean.setProvince(areaInfo.getProvince());
  84. this.continueBean.setArea(areaInfo.getArea());
  85. }
  86. ActivityConfigDao activityConfigDao = (ActivityConfigDao)SpringUtils.getBean(ActivityConfigDao.class);
  87. ActivityConfigBean activityConfigBean = null;
  88. if (!StringUtils.isEmpty(this.continueBean.getFhcpid()) && !StringUtils.isEmpty(this.continueBean.getFhspid())) {
  89. activityConfigBean = activityConfigDao.findByCallerhead(this.continueBean.getFhcpid(), this.continueBean.getFhspid(), this.continueBean.getProvince());
  90. } else {
  91. activityConfigBean = activityConfigDao.findByCallerhead(this.continueBean.getCpid(), this.continueBean.getSpid(), this.continueBean.getProvince());
  92. }
  93. if (activityConfigBean != null) {
  94. this.continueBean.setActivityType(String.valueOf(activityConfigBean.getActiveType()));
  95. }
  96. } catch (Exception var22) {
  97. log.error("查询ACTIVETYPE出现异常," + var22.getMessage());
  98. }
  99. String href = continueVipUrl + "userid=" + this.continueBean.getUserid() + "&cpid=" + this.continueBean.getCpid() + "&spid=" + this.continueBean.getSpid() + "&activityType=" + this.continueBean.getActivityType() + "&vippool=" + this.continueBean.getVippool()+"&orderchannel2="+this.continueBean.getOrderchannel2()+"&cancelchannel2="+this.continueBean.getCancelchannel2()+"&acid="+this.continueBean.getAcid();
  100. if (!StringUtils.isEmpty(this.continueBean.getFhcpid()) && !StringUtils.isEmpty(this.continueBean.getFhspid())) {
  101. href = continueVipUrl + "userid=" + this.continueBean.getUserid() + "&cpid=" + this.continueBean.getCpid() + "&spid=" + this.continueBean.getSpid() + "&activityType=" + this.continueBean.getActivityType() + "&vippool=" + this.continueBean.getVippool() + "&fhcpid=" + this.continueBean.getFhcpid() + "&fhspid=" + this.continueBean.getFhspid()+"&orderchannel2="+this.continueBean.getOrderchannel2()+"&cancelchannel2="+this.continueBean.getCancelchannel2()+"&acid="+this.continueBean.getAcid();
  102. }
  103. logBean.setReq(href);
  104. String result = "1";
  105. String errorinfo = "";
  106. try {
  107. result = URLUtil.get(href, 15000);
  108. logBean.setRsp(result);
  109. Map<?, ?> map = JsonUtil.jsonToMap(result);
  110. result = (String)map.get("resultcode");
  111. if (!result.equals("0")) {
  112. errorinfo = (String)map.get("errorinfo");
  113. }
  114. logBean.setTimes(String.valueOf(System.currentTimeMillis() - startime));
  115. } catch (Exception var20) {
  116. result = "2";
  117. if (StringUtils.isEmpty(logBean.getRsp())) {
  118. errorinfo = "调续送接口超时";
  119. } else {
  120. errorinfo = "解析返回值出现异常";
  121. }
  122. var20.printStackTrace();
  123. } finally {
  124. this.threadSignal.countDown();
  125. log.info("会员续送[" + this.continueBean.getUserid() + "," + this.continueBean.getCpid() + "]:结果=" + result + "[" + this.totalSize + "/" + ((long)this.totalSize - this.threadSignal.getCount()) + "],花费时间:" + (System.currentTimeMillis() - startime) + "/ms");
  126. logger.info(JsonUtil.objectToJson(logBean));
  127. try {
  128. ContinueOrderDao continueOrderDao = (ContinueOrderDao)SpringUtils.getBean(ContinueOrderDao.class);
  129. if (!StringUtils.isEmpty(this.continueBean.getFhcpid()) && !StringUtils.isEmpty(this.continueBean.getFhspid())) {
  130. continueOrderDao.saveVipResultByFh(this.continueBean.getUserid(), result, errorinfo, this.continueBean.getCpid(), this.continueBean.getSpid(), this.continueBean.getFhcpid(), this.continueBean.getFhspid());
  131. } else {
  132. continueOrderDao.saveVipResult(this.continueBean.getUserid(), result, errorinfo, this.continueBean.getCpid(), this.continueBean.getSpid());
  133. }
  134. } catch (SQLException var19) {
  135. var19.printStackTrace();
  136. }
  137. }
  138. }
  139. }