From 9ef80e04458d4b12ad5ec586d83b9f6bff22eb5d Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 24 Apr 2025 17:46:07 +0800
Subject: [PATCH] feat(rabbitmq): 添加活动订单项核销功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
index e244e5d..d61a600 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -22,6 +22,7 @@
 import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
 import cc.mrbird.febs.pay.service.IXcxPayService;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
@@ -60,6 +61,7 @@
     private final IXcxPayService iXcxPayService;
     private final IApiMallMemberWalletService iApiMallMemberWalletService;
     private final HappyActivityCategoryMapper happyActivityCategoryMapper;
+    private final AgentProducer agentProducer;
 
     @Override
     public FebsResponse activityList(ApiActivityInfoDto dto) {
@@ -795,8 +797,9 @@
             happyActivityOrderItem.setTransferItemId(memberId);
             happyActivityOrderItemMapper.updateById(happyActivityOrderItem);
 
-            HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId());
+            agentProducer.sendCheckActivityItem(happyActivityOrderItem.getOrderId());
 
+            HappyActivity happyActivity = this.baseMapper.selectById(happyActivityOrderItem.getActivityId());
             ApiCheckOrderVo apiCheckOrderVo = new ApiCheckOrderVo();
             apiCheckOrderVo.setActivityName(happyActivity.getName());
             apiCheckOrderVo.setActivityStartTime(happyActivity.getStartTime());
@@ -813,6 +816,33 @@
         return new FebsResponse().fail().message("核销失败!");
     }
 
+    /**
+     * 检查活动订单项的状态
+     * 当指定订单的所有活动订单项都不处于"未使用"状态时,将订单状态更新为"已使用"
+     *
+     * @param orderId 订单ID,用于查询活动订单项和订单信息
+     */
+    @Override
+    public void checkActivityItem(Long orderId) {
+        // 查询指定订单ID的活动订单项数量,且状态为"未使用"
+        Integer integer = happyActivityOrderItemMapper.selectCount(
+                new LambdaQueryWrapper<HappyActivityOrderItem>()
+                        .eq(HappyActivityOrderItem::getOrderId, orderId)
+                        .eq(HappyActivityOrderItem::getState, StateUpDownEnum.DOWN.getCode())
+        );
+        // 如果没有找到任何未使用的活动订单项
+        if(0 == integer){
+            // 根据订单ID查询订单信息
+            HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(orderId);
+            // 更新订单状态为"已使用"
+            happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode());
+            // 保存更新后的订单信息
+            happyActivityOrderMapper.updateById(happyActivityOrder);
+        }
+        // 结束方法执行
+        return;
+    }
+
     @Override
     public FebsResponse voteActivityHot(Long id) {
 

--
Gitblit v1.9.1