diff --git a/pom.xml b/pom.xml
index 407844f8..ee91f6fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,7 @@
org.springframework.boot
spring-boot-starter-data-redis
+
@@ -209,21 +210,10 @@
3.11.2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/yshop-api/pom.xml b/yshop-api/pom.xml
index e6b05b25..af403cbb 100644
--- a/yshop-api/pom.xml
+++ b/yshop-api/pom.xml
@@ -83,6 +83,11 @@
emoji-java
4.0.0
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+ 2.0.4
+
diff --git a/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqConsumer.java b/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqConsumer.java
new file mode 100644
index 00000000..16cfba4b
--- /dev/null
+++ b/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqConsumer.java
@@ -0,0 +1,48 @@
+package co.yixiang.common.rocketmq;
+
+import cn.hutool.core.util.ObjectUtil;
+import co.yixiang.modules.order.entity.YxStoreOrder;
+import co.yixiang.modules.order.service.YxStoreOrderService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName 消费者
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2020/1/1
+ **/
+@Component
+@RocketMQMessageListener(
+ topic = "yshop-topic",
+ consumerGroup = "yshop-group",
+ selectorExpression = "*"
+)
+@Slf4j
+public class MqConsumer implements RocketMQListener {
+
+ @Autowired
+ private YxStoreOrderService storeOrderService;
+
+ @Override
+ public void onMessage(String msg) {
+ log.info("系统开始处理延时任务---订单超时未付款---订单id:" + msg);
+
+ Integer id = Integer.valueOf(msg);
+
+ YxStoreOrder order = storeOrderService.getOne(new QueryWrapper()
+ .eq("id", id).eq("is_del",0).eq("paid",0));
+
+ if(ObjectUtil.isNull(order)) {
+ return;
+ }
+
+ storeOrderService.cancelOrderByTask(id);
+
+ log.info("=====处理成功======");
+
+ }
+}
diff --git a/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqProducer.java b/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqProducer.java
new file mode 100644
index 00000000..8e8faa9a
--- /dev/null
+++ b/yshop-api/src/main/java/co/yixiang/common/rocketmq/MqProducer.java
@@ -0,0 +1,49 @@
+package co.yixiang.common.rocketmq;
+
+import org.apache.rocketmq.client.exception.MQBrokerException;
+import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName 生成者
+ * @Author hupeng <610796224@qq.com>
+ * @Date 2020/1/1
+ **/
+@Component
+public class MqProducer {
+ //注入rocketMQ的模板
+ @Autowired
+ private RocketMQTemplate rocketMQTemplate;
+
+
+ /**
+ * 发送延时消息10分钟
+ *
+ * @param topic
+ * @param msg
+ */
+ public void sendMsg(String topic, String msg) {
+ DefaultMQProducer defaultMQProducer = rocketMQTemplate.getProducer();
+
+ Message message = new Message(topic,msg.getBytes());
+ message.setDelayTimeLevel(14);
+
+ try {
+ defaultMQProducer.send(message);
+ } catch (MQClientException e) {
+ e.printStackTrace();
+ } catch (RemotingException e) {
+ e.printStackTrace();
+ } catch (MQBrokerException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
index e2546736..02969720 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
@@ -5,7 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
-import co.yixiang.common.constant.CommonConstant;
+import co.yixiang.common.rocketmq.MqProducer;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.common.web.vo.Paging;
import co.yixiang.domain.AlipayConfig;
@@ -42,7 +42,6 @@ import co.yixiang.modules.shop.service.YxStoreProductReplyService;
import co.yixiang.modules.shop.service.YxStoreProductService;
import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.modules.shop.web.vo.YxStoreCartQueryVo;
-import co.yixiang.modules.task.DelayJobService;
import co.yixiang.modules.user.entity.YxUser;
import co.yixiang.modules.user.entity.YxUserBill;
import co.yixiang.modules.user.entity.YxWechatUser;
@@ -145,8 +144,6 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl delayJob = new HashMap<>();
- delayJob.put("delayJobName","CANCEL_ORVERTIME_ORDER");
- delayJob.put("orderId",storeOrder.getId());
- delayJobService.submitJob(delayJob, CommonConstant.ORDER_OUTTIME_UNPAY);
- log.info("添加定时任务成功 订单id: [{}]:", storeOrder.getId());
+ //使用MQ延时消息
+ mqProducer.sendMsg("yshop-topic",storeOrder.getId().toString());
+ log.info("投递延时订单id: [{}]:", storeOrder.getId());
+
return storeOrder;
}
diff --git a/yshop-api/src/main/java/co/yixiang/modules/shop/web/controller/IndexController.java b/yshop-api/src/main/java/co/yixiang/modules/shop/web/controller/IndexController.java
index 39987bc7..fd3a8ba1 100644
--- a/yshop-api/src/main/java/co/yixiang/modules/shop/web/controller/IndexController.java
+++ b/yshop-api/src/main/java/co/yixiang/modules/shop/web/controller/IndexController.java
@@ -32,10 +32,13 @@ public class IndexController {
private final YxSystemConfigService systemConfigService;
private final YxStoreProductService storeProductService;
+
+
@GetMapping("/index")
@ApiOperation(value = "首页数据",notes = "首页数据")
public ApiResult