package com.iamberry.rst.controllers.mq; import com.iamberry.rst.controllers.sys.SysController; import com.iamberry.rst.core.cm.SalesOrder; import com.iamberry.rst.core.cm.SalesOrderItem; import com.iamberry.rst.core.cm.StoreInfo; import com.iamberry.rst.core.order.ProductColor; import com.iamberry.rst.core.sms.OrderMessage; import com.iamberry.rst.core.sms.SmsMessage; import com.iamberry.rst.core.sys.Relu; import com.iamberry.rst.faces.cm.SalesOrderService; import com.iamberry.rst.faces.cm.StoreInfoService; import com.iamberry.rst.faces.order.EfastOrderService; import com.iamberry.rst.faces.product.ProductService; import com.iamberry.rst.faces.sms.MessageService; import com.iamberry.rst.faces.sms.SmsService; import com.iamberry.rst.faces.sys.SysService; import com.iamberry.rst.service.sms.mapper.MessageMapper; import com.iamberry.wechat.tools.DateTimeUtil; import com.iamberry.wechat.tools.ResponseJson; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @Component(value="mqTask") @Lazy(false) public class MQTask implements InitializingBean { private static Logger logger = LoggerFactory.getLogger(SysController.class); @Autowired private MessageService messageService; @Autowired private SmsService smsService; @Autowired private EfastOrderService efastOrderService; @Autowired private SalesOrderService salesOrderService; @Autowired private SysService sysService; private Object lock = new Object(); private Object lock1 = new Object(); public void afterPropertiesSet() throws Exception { } //@Scheduled(cron = "*/10 * * * * ?") //@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点 //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次 // @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次 public void auditMessagePush(){ logger.info("------------执行消息提醒,推送待处理订单短信 start-----------"); List smsMessageList = messageService.listOrderMessages(); if(smsMessageList != null && smsMessageList.size() > 0){ //循环推送短信 for(SmsMessage smsMessage : smsMessageList){ ResponseJson json = smsService.sms(smsMessage.getTel(),smsMessage.getTypes(),smsMessage.getCounts()); if(json.getReturnCode() == 200){ logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信成功"); //设置审核通过记录为无效 if(smsMessage.getTypes() == 3){ OrderMessage orderMessage = new OrderMessage(); orderMessage.setMessageStatus(2); orderMessage.setMessageType(3); messageService.updateOrderMessageStatus(orderMessage); } }else{ logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信失败"+json.getReturnMsg()); } } } } /** * 批量同步百胜订单信息 * @throws Exception */ @Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次 //@Scheduled(cron = "*/10 * * * * ?") public void syncEfastOrderList() throws Exception { int pageNo = 1; int pageSize = 20; boolean flag = false; //控制是否还需要获取百胜订单信息 String date = ""; synchronized (lock) { //根据时间排序查询订单信息 List orderList = salesOrderService.listSalesOrder(new SalesOrder()); if (orderList != null && orderList.size() > 0) { SalesOrder salesOrder = orderList.get(0); date = salesOrder.getSalesCreateTime().toString(); } else { date = "2016-04-01"; } do { //批量获取百胜订单信息 JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date); if (obj == null) { return; } int totalResults = obj.getInt("total_results"); //百胜返回总页数 if (pageNo < totalResults) { flag = true; pageNo++; } else { flag = false; } salesOrderService.addSalesOrderList(obj); } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页 } } /** * 同步百胜订单状态等信息 * @throws Exception */ @Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次 //@Scheduled(cron = "*/10 * * * * ?") public void syncEfastOrderStatus() throws Exception { int pageNo = 1; int pageSize = 20; boolean flag = false; //控制是否还需要获取百胜订单信息 /*int returnPageNo = 1; int returnPageSize = 20; boolean returnFlag = false; //控制是否还需要获取百胜退单信息*/ synchronized (lock1) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date beginDate = new Date(); SalesOrder order = new SalesOrder(); Calendar date = Calendar.getInstance(); Relu relu = new Relu(); relu.setrId(6); relu.setrIsStatus(1); //获取同步百胜订单的开始时间 List reluList = sysService.ListSysRelu(relu); if (reluList == null || reluList.size() == 0) { relu.setrNum(7); relu.setrText("0"); } else { relu = reluList.get(0); } if (Integer.parseInt(relu.getrText()) > 0) { date.setTime(beginDate); date.set(Calendar.DATE, date.get(Calendar.DATE) - (int) relu.getrNum()); order.setSalesCreateTime(format.parse(format.format(date.getTime()))); } else { order.setSalesCreateTime(format.parse("2016-04-01")); relu.setrText("1"); //从头开始同步,只同步一次 //sysService.updateRelu(relu); } //根据创建时间获取订单信息 List orderlist = salesOrderService.listSalesOrder(order); if (orderlist == null || orderlist.size() == 0) { return; } do { //批量获取百胜订单信息 JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, format.format(order.getSalesCreateTime())); if (obj == null) { return; } JSONArray orderList = obj.getJSONArray("list"); if (orderList == null || orderList.size() == 0) { return; } salesOrderService.updateOrderList(orderList, orderlist); int totalResults = obj.getInt("total_results"); //百胜返回总页数 if (pageNo < totalResults) { flag = true; pageNo++; } else { flag = false; } } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页 //无法实现获取退单信息,只能查出已确认未收货的订单 /*do { //批量获取百胜退单信息 JSONObject obj = efastOrderService.listReturnOrderFormEfast(returnPageNo, returnPageSize, format.format(date.getTime())); if (obj == null) { return; } JSONArray orderList = obj.getJSONArray("list"); System.out.println("orderList="+orderList); if (orderList == null || orderList.size() == 0) { return; } salesOrderService.updateReturnOrderList(orderList, orderlist); int totalResults = obj.getInt("total_results"); //百胜返回总页数 if (returnPageNo < totalResults) { returnFlag = true; returnPageNo++; } else { returnFlag = false; } } while (returnFlag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页*/ } } }