yanghui
2022-12-02 bcbafaa6e7c98399b006f947d6f37e860efaa363
#feat 加入mq延时删除未付款订单
1个文件已添加
2个文件已修改
83 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/config/RabbitmqConfig.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/message/ShopOrderMessage.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopFlowerOrderServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}