MQTask.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package com.iamberry.rst.controllers.mq;
  2. import com.iamberry.rst.controllers.sys.SysController;
  3. import com.iamberry.rst.core.cm.SalesOrder;
  4. import com.iamberry.rst.core.cm.SalesOrderItem;
  5. import com.iamberry.rst.core.cm.StoreInfo;
  6. import com.iamberry.rst.core.order.ProductColor;
  7. import com.iamberry.rst.core.sms.OrderMessage;
  8. import com.iamberry.rst.core.sms.SmsMessage;
  9. import com.iamberry.rst.core.sys.Relu;
  10. import com.iamberry.rst.faces.cm.SalesOrderService;
  11. import com.iamberry.rst.faces.cm.StoreInfoService;
  12. import com.iamberry.rst.faces.order.EfastOrderService;
  13. import com.iamberry.rst.faces.product.ProductService;
  14. import com.iamberry.rst.faces.sms.MessageService;
  15. import com.iamberry.rst.faces.sms.SmsService;
  16. import com.iamberry.rst.faces.sys.SysService;
  17. import com.iamberry.rst.service.sms.mapper.MessageMapper;
  18. import com.iamberry.wechat.tools.DateTimeUtil;
  19. import com.iamberry.wechat.tools.ResponseJson;
  20. import net.sf.json.JSONArray;
  21. import net.sf.json.JSONObject;
  22. import org.apache.commons.lang.StringUtils;
  23. import org.slf4j.Logger;
  24. import org.slf4j.LoggerFactory;
  25. import org.springframework.beans.factory.InitializingBean;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.context.annotation.Lazy;
  28. import org.springframework.scheduling.annotation.Scheduled;
  29. import org.springframework.stereotype.Component;
  30. import java.text.SimpleDateFormat;
  31. import java.util.ArrayList;
  32. import java.util.Calendar;
  33. import java.util.Date;
  34. import java.util.List;
  35. import java.util.concurrent.locks.Lock;
  36. import java.util.concurrent.locks.ReentrantLock;
  37. @Component(value="mqTask")
  38. @Lazy(false)
  39. public class MQTask implements InitializingBean {
  40. private static Logger logger = LoggerFactory.getLogger(SysController.class);
  41. @Autowired
  42. private MessageService messageService;
  43. @Autowired
  44. private SmsService smsService;
  45. @Autowired
  46. private EfastOrderService efastOrderService;
  47. @Autowired
  48. private SalesOrderService salesOrderService;
  49. @Autowired
  50. private SysService sysService;
  51. private Object lock = new Object();
  52. private Object lock1 = new Object();
  53. public void afterPropertiesSet() throws Exception {
  54. }
  55. //@Scheduled(cron = "*/10 * * * * ?")
  56. //@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点
  57. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  58. // @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  59. public void auditMessagePush(){
  60. logger.info("------------执行消息提醒,推送待处理订单短信 start-----------");
  61. List<SmsMessage> smsMessageList = messageService.listOrderMessages();
  62. if(smsMessageList != null && smsMessageList.size() > 0){
  63. //循环推送短信
  64. for(SmsMessage smsMessage : smsMessageList){
  65. ResponseJson json = smsService.sms(smsMessage.getTel(),smsMessage.getTypes(),smsMessage.getCounts());
  66. if(json.getReturnCode() == 200){
  67. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信成功");
  68. //设置审核通过记录为无效
  69. if(smsMessage.getTypes() == 3){
  70. OrderMessage orderMessage = new OrderMessage();
  71. orderMessage.setMessageStatus(2);
  72. orderMessage.setMessageType(3);
  73. messageService.updateOrderMessageStatus(orderMessage);
  74. }
  75. }else{
  76. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信失败"+json.getReturnMsg());
  77. }
  78. }
  79. }
  80. }
  81. /**
  82. * 批量同步百胜订单信息
  83. * @throws Exception
  84. */
  85. @Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  86. //@Scheduled(cron = "*/10 * * * * ?")
  87. public void syncEfastOrderList() throws Exception {
  88. int pageNo = 1;
  89. int pageSize = 20;
  90. boolean flag = false; //控制是否还需要获取百胜订单信息
  91. String date = "";
  92. synchronized (lock) {
  93. //根据时间排序查询订单信息
  94. List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
  95. if (orderList != null && orderList.size() > 0) {
  96. SalesOrder salesOrder = orderList.get(0);
  97. date = salesOrder.getSalesCreateTime().toString();
  98. } else {
  99. date = "2016-04-01";
  100. }
  101. do {
  102. //批量获取百胜订单信息
  103. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date);
  104. if (obj == null) {
  105. return;
  106. }
  107. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  108. if (pageNo < totalResults) {
  109. flag = true;
  110. pageNo++;
  111. } else {
  112. flag = false;
  113. }
  114. salesOrderService.addSalesOrderList(obj);
  115. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  116. }
  117. }
  118. /**
  119. * 同步百胜订单状态等信息
  120. * @throws Exception
  121. */
  122. @Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  123. //@Scheduled(cron = "*/10 * * * * ?")
  124. public void syncEfastOrderStatus() throws Exception {
  125. int pageNo = 1;
  126. int pageSize = 20;
  127. boolean flag = false; //控制是否还需要获取百胜订单信息
  128. /*int returnPageNo = 1;
  129. int returnPageSize = 20;
  130. boolean returnFlag = false; //控制是否还需要获取百胜退单信息*/
  131. synchronized (lock1) {
  132. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  133. Date beginDate = new Date();
  134. SalesOrder order = new SalesOrder();
  135. Calendar date = Calendar.getInstance();
  136. Relu relu = new Relu();
  137. relu.setrId(6);
  138. relu.setrIsStatus(1);
  139. //获取同步百胜订单的开始时间
  140. List<Relu> reluList = sysService.ListSysRelu(relu);
  141. if (reluList == null || reluList.size() == 0) {
  142. relu.setrNum(7);
  143. relu.setrText("0");
  144. } else {
  145. relu = reluList.get(0);
  146. }
  147. if (Integer.parseInt(relu.getrText()) > 0) {
  148. date.setTime(beginDate);
  149. date.set(Calendar.DATE, date.get(Calendar.DATE) - (int) relu.getrNum());
  150. order.setSalesCreateTime(format.parse(format.format(date.getTime())));
  151. } else {
  152. order.setSalesCreateTime(format.parse("2016-04-01"));
  153. relu.setrText("1");
  154. //从头开始同步,只同步一次
  155. //sysService.updateRelu(relu);
  156. }
  157. //根据创建时间获取订单信息
  158. List<SalesOrder> orderlist = salesOrderService.listSalesOrder(order);
  159. if (orderlist == null || orderlist.size() == 0) {
  160. return;
  161. }
  162. do {
  163. //批量获取百胜订单信息
  164. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, format.format(order.getSalesCreateTime()));
  165. if (obj == null) {
  166. return;
  167. }
  168. JSONArray orderList = obj.getJSONArray("list");
  169. if (orderList == null || orderList.size() == 0) {
  170. return;
  171. }
  172. salesOrderService.updateOrderList(orderList, orderlist);
  173. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  174. if (pageNo < totalResults) {
  175. flag = true;
  176. pageNo++;
  177. } else {
  178. flag = false;
  179. }
  180. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  181. //无法实现获取退单信息,只能查出已确认未收货的订单
  182. /*do {
  183. //批量获取百胜退单信息
  184. JSONObject obj = efastOrderService.listReturnOrderFormEfast(returnPageNo, returnPageSize, format.format(date.getTime()));
  185. if (obj == null) {
  186. return;
  187. }
  188. JSONArray orderList = obj.getJSONArray("list");
  189. System.out.println("orderList="+orderList);
  190. if (orderList == null || orderList.size() == 0) {
  191. return;
  192. }
  193. salesOrderService.updateReturnOrderList(orderList, orderlist);
  194. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  195. if (returnPageNo < totalResults) {
  196. returnFlag = true;
  197. returnPageNo++;
  198. } else {
  199. returnFlag = false;
  200. }
  201. } while (returnFlag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页*/
  202. }
  203. }
  204. }