123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- 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<SmsMessage> 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<SalesOrder> 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<Relu> 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<SalesOrder> 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); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页*/
- }
- }
- }
|