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.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.service.sms.mapper.MessageMapper; 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.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 ProductService productService; @Autowired private StoreInfoService storeInfoService; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 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 = "2016-04-01"; do { //批量获取百胜订单信息 JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize,date); System.out.println("obj="+obj); if (obj == null) { return; } int pageSize1 = obj.getInt("page_size"); //百胜返回数据条目数 if (pageSize <= pageSize1) { flag = true; pageNo++; } else { flag = false; } this.addSalesOrderList(obj); } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页 } /** * 添加订单信息 * @param obj * @throws Exception */ public void addSalesOrderList(JSONObject obj) throws Exception { if (obj == null) { return; } JSONArray orderList = obj.getJSONArray("list"); if (orderList == null || orderList.size() == 0) { return; } for (int i = 0;i < orderList.size();i++) { JSONObject order = orderList.getJSONObject(i); //获取订单详情 JSONObject orderInfo = efastOrderService.getOrderFormEfast(order.getString("order_sn")); if (orderInfo == null) { return; } //获取订单项集合 JSONArray itemArray = orderInfo.getJSONArray("orders"); if (itemArray == null || itemArray.size() == 0) { return; } SalesOrder salesOrder = new SalesOrder(); salesOrder.setSalesOrderId(order.getString("order_sn"));//订单编号 int payStatus = order.getInt("pay_status"); //是否付款 0:未付款,2:已付款 int orderStatus = order.getInt("order_status"); //订单状态 0:未确认,1:已确认,2:挂起,3:作废 int shippingStatus = order.getInt("shipping_status"); //发货状态 0:未发货,1:已发货,3:备货中 if (payStatus == 2 && (orderStatus == 0 || orderStatus == 1)) { if (shippingStatus == 0) { salesOrder.setSalesStatus(2); } else if (shippingStatus == 1) { salesOrder.setSalesStatus(5); } } salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码 salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号 salesOrder.setSalesPayType(efastOrderService.getPayType(order.getString("pay_name")));//支付方式 salesOrder.setSalesPayTime(format.parse(order.getString("pay_time")));//支付时间 salesOrder.setSalesUserRemark(order.getString("postscript"));//买家留言 salesOrder.setSalesAdminRemark(order.getString("to_buyer"));//商家留言 salesOrder.setSalesAmount(order.getInt("order_amount")*100);//应付款 salesOrder.setSalesPayMoney(order.getInt("money_paid")*100);//已付款 salesOrder.setSalesAddressName(order.getString("consignee"));//收货人 salesOrder.setSalesAddressTel(order.getString("mobile"));//收货人电话 salesOrder.setSalesAddressInfo(order.getString("address").replaceAll(" ","-"));//收货地址 salesOrder.setSalesShippingFee(order.getInt("shipping_fee")*100);//邮费 salesOrder.setSalesCreateTime(format.parse(order.getString("create_time")));//创建时间 if (StringUtils.isNotEmpty(order.getString("delivery_time"))) { salesOrder.setSalesSendTime(format.parse(order.getString("delivery_time")));//发货时间 } salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额 salesOrder.setSalesPledgeMoney(0);//押金金额 salesOrder.setSalesRemainDeposit(0);//待提取金额 salesOrder.setSalesSendType(2);//发货方式,默认为物流发货 salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间 salesOrder.setSalesWaitMoney(0);//待付金额 salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额 salesOrder.setSalesPayNumber("0000");//支付尾号 salesOrder.setSalesType(1);//订单类型 //查询店铺信息 StoreInfo storeInfo = new StoreInfo(); storeInfo.setStoreEfast(order.getString("sd_id")); List storeList = storeInfoService.listStore(storeInfo); int storeId = 0; int companyId = 0; if (storeList == null || storeList.size() == 0) { storeInfo = storeList.get(0); storeId = storeInfo.getStoreId(); companyId = storeInfo.getCompanyId(); } salesOrder.setSalesStoreId(storeId);//店铺id salesOrder.setSalesCompanyId(companyId);//销售公司id List itemList = new ArrayList(); for (int j = 0;j < itemArray.size();j++) { ProductColor color = new ProductColor(); JSONObject itemJson = itemArray.getJSONObject(j); SalesOrderItem item = new SalesOrderItem(); color.setColorBar(itemJson.getString("goods_sn")); List colorList = productService.listproductAndColor(color); if (colorList == null || colorList.size() == 0) { return; } color = colorList.get(0); item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码 item.setItemNum(itemJson.getInt("sn"));//商品数量 item.setItemCreateTime(salesOrder.getSalesCreateTime()); item.setItemColorId(color.getColorId()); item.setItemProductColor(color.getColorName()); item.setItemProductDiscount(color.getColorDiscount()); item.setItemProductId(color.getColorProductId()); item.setItemProductName(color.getProductName()); item.setItemProductPic(color.getColorPicture()); item.setItemProductType(color.getProductType()); item.setItemProductPrice(color.getColorPrice()); itemList.add(item); } } } }