springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/config/RabbitmqConfig.java
@@ -45,6 +45,13 @@ public static final String ACID_MESSAGE_ROUTING_KEY = "huacheng.acid.message.key"; public static final String ACID_MESSAGE_EXCHANGE = "huacheng.acid.message.exchange"; /** * 服务商城订单 */ public static final String SHOP_ORDER_QUEUE="huacheng.shop.order.queue"; public static final String SHOP_ORDER_ROUTING_KEY = "huacheng.shop.order.key"; public static final String SHOP_ORDER_EXCHANGE = "huacheng.shop.order.exchange"; @Bean public Queue preOrderQueue(){ return new Queue(PreOrder_QUEUE,true,false,false,null); @@ -236,5 +243,21 @@ } @Bean public Queue shopOrderQueue(){ return new Queue(SHOP_ORDER_QUEUE,true,false,false,null); } @Bean public Exchange shopOrderExchange(){ Map<String, Object> arguments = new HashMap<>(); arguments.put("x-delayed-type", ExchangeTypes.DIRECT); return new CustomExchange(SHOP_ORDER_EXCHANGE,"x-delayed-message",true,false,arguments); } @Bean public Binding shopOrderBinding(){ return BindingBuilder.bind(shopOrderQueue()).to(shopOrderExchange()).with(SHOP_ORDER_ROUTING_KEY).noargs(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/message/ShopOrderMessage.java
New file @@ -0,0 +1,45 @@ package com.panzhihua.service_community.message; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.panzhihua.common.model.vos.shop.ComShopFlowerOrderVO; import com.panzhihua.service_community.dao.ComShopFlowerOrderDAO; import com.panzhihua.service_community.dao.ComShopFlowerOrderGoodsDAO; import com.panzhihua.service_community.dao.RentingHourseOrderDao; import com.panzhihua.service_community.dao.RentingHourseRegisterDao; import com.panzhihua.service_community.entity.RentingHourseOrder; import com.panzhihua.service_community.entity.RentingHourseRegister; import com.panzhihua.service_community.model.dos.ComShopFlowerOrderDO; import com.panzhihua.service_community.model.dos.ComShopFlowerOrderGoodsDO; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; import static java.util.Objects.nonNull; /** * @author yh * 商城订单处理 */ @Component public class ShopOrderMessage { public static final String DELAYED_QUEUE="huacheng.shop.order.queue"; @Resource private ComShopFlowerOrderDAO comShopFlowerOrderDAO; @Resource private ComShopFlowerOrderGoodsDAO comShopFlowerOrderGoodsDAO; @RabbitListener(queues=DELAYED_QUEUE) public void cancelOrder(ComShopFlowerOrderVO shopOrderVO){ ComShopFlowerOrderDO comShopFlowerOrderDO = comShopFlowerOrderDAO.selectById(shopOrderVO.getOrderId()); if (nonNull(comShopFlowerOrderDO)){ //30分钟未付款删除订单 if (comShopFlowerOrderDO.getStatus() == ComShopFlowerOrderDO.status.dfk){ comShopFlowerOrderGoodsDAO.delete(new LambdaQueryWrapper<ComShopFlowerOrderGoodsDO>().eq(ComShopFlowerOrderGoodsDO::getOrderId, shopOrderVO.getOrderId())); comShopFlowerOrderDAO.deleteById(shopOrderVO.getOrderId()); } } } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java
@@ -3,6 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; @@ -21,12 +22,14 @@ import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.*; import com.panzhihua.common.utlis.wx.WXPayUtil; import com.panzhihua.service_community.config.RabbitmqConfig; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.*; import com.panzhihua.service_community.service.ComShopFlowerOrderService; import com.panzhihua.service_community.util.WxMaConfiguration; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -81,6 +84,8 @@ private WxMaConfiguration wxMaConfiguration; @Resource private UserService userService; @Resource private RabbitTemplate rabbitTemplate; @Value("${hcMin.app.isTest}") @@ -336,7 +341,16 @@ } catch (Exception e) { log.error("调用微信支付异常,异常原因:" + e.getMessage()); } //发送消息到mq rabbitTemplate.convertAndSend(RabbitmqConfig.SHOP_ORDER_EXCHANGE, RabbitmqConfig.SHOP_ORDER_ROUTING_KEY, shopOrderVO, message -> { message.getMessageProperties().setHeader("x-delay", dateToSecond(DateUtil.endOfDay(DateUtil.date())) * 1000 * 60); return message; }); return R.ok(shopOrderVO); } private Long dateToSecond(Date expireTime){ return DateUtil.between(new Date(),expireTime, DateUnit.MS); } /** @@ -1202,4 +1216,5 @@ comShopFlowerOrderDeliveryNoListVO.setPage(orderPageVOIPage); return R.ok(comShopFlowerOrderDeliveryNoListVO); } }