From 1e6775a63c0d3011955fc607c4291de06ff8e0c2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 25 Apr 2025 10:54:24 +0800
Subject: [PATCH] feat(mall): 添加活动报名列表导出功能
---
src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 49 insertions(+), 4 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..13ca39c 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
@@ -10,6 +10,7 @@
import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto;
import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto;
import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
+import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionRecordInPageDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.HappyActivityService;
@@ -22,6 +23,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 +62,7 @@
private final IXcxPayService iXcxPayService;
private final IApiMallMemberWalletService iApiMallMemberWalletService;
private final HappyActivityCategoryMapper happyActivityCategoryMapper;
+ private final AgentProducer agentProducer;
@Override
public FebsResponse activityList(ApiActivityInfoDto dto) {
@@ -147,6 +150,14 @@
// 创建分页对象,传入当前页和每页大小
Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionInPage(page, dto);
+ return new FebsResponse().success().data(voteRecordInPage);
+ }
+
+ @Override
+ public FebsResponse voteOptionRecordInPage(ApiVoteOptionRecordInPageDto dto) {
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionRecordInPage(page, dto);
return new FebsResponse().success().data(voteRecordInPage);
}
@@ -414,6 +425,12 @@
HappyActivity happyActivity = this.baseMapper.selectById(activityId);
if (ObjectUtil.isEmpty(happyActivity)) {
throw new FebsException("活动不存在");
+ }
+ if (StateUpDownEnum.ACTIVITY_STATE_NOT_START.getCode() == happyActivity.getState()) {
+ throw new FebsException("活动尚未开始");
+ }
+ if (StateUpDownEnum.ACTIVITY_STATE_END.getCode() == happyActivity.getState()) {
+ throw new FebsException("活动已结束");
}
Integer joinCnt = happyActivity.getJoinCnt();
@@ -795,8 +812,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,13 +831,40 @@
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);
+ if(happyActivityOrder == null){
+ return;
+ }
+ // 更新订单状态为"已使用"
+ happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode());
+ // 保存更新后的订单信息
+ happyActivityOrderMapper.updateById(happyActivityOrder);
+ }
+ // 结束方法执行
+ return;
+ }
+
@Override
public FebsResponse voteActivityHot(Long id) {
ApiVoteActivityHotVo apiVoteActivityHotVo = new ApiVoteActivityHotVo();
- HappyActivity happyActivity = this.baseMapper.selectById(id);
- apiVoteActivityHotVo.setStartTime(happyActivity.getStartTime());
- apiVoteActivityHotVo.setEndTime(happyActivity.getEndTime());
Integer optionCnt = happyActivityOptionMapper.selectCount(
new LambdaQueryWrapper<HappyActivityOption>()
--
Gitblit v1.9.1