From 7eda42694634ca4cf242e4bc715fe22b523af3d5 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 09 May 2025 14:06:42 +0800
Subject: [PATCH] feat(mall): 添加活动订单导出功能
---
src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java | 39 +++++++++++++++++--
src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java | 2 +
src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java | 52 ++++++++++++++++++++++++++
src/main/resources/templates/febs/views/modules/votesActivity/orderList.html | 17 ++++++++
4 files changed, 106 insertions(+), 4 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
index c504b30..46cc299 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
import cc.mrbird.febs.common.utils.excl.ExcelUtil;
@@ -14,8 +15,11 @@
import cc.mrbird.febs.mall.dto.activity.*;
import cc.mrbird.febs.mall.entity.HappyActivity;
import cc.mrbird.febs.mall.entity.HappyActivityOption;
+import cc.mrbird.febs.mall.entity.HappyActivityOrder;
import cc.mrbird.febs.mall.service.IAdminHappyActivityService;
+import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -312,4 +316,52 @@
ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, false);
}
+ @SneakyThrows
+ @GetMapping("/exportOrderList")
+ public void exportOrderList(@RequestParam Map<String, String> params, HttpServletResponse response) {
+ //获取查询参数
+ if(ObjectUtil.isEmpty(params.get("activityId"))){
+ throw new FebsException("请选择活动");
+ }
+ String activityId = params.get("activityId");
+ HappyActivity happyActivity = adminHappyActivityService.getBaseMapper().selectById(activityId);
+ if(ObjectUtil.isEmpty(happyActivity)){
+ throw new FebsException("活动不存在");
+ }
+ List<ExcelSheetPO> res = new ArrayList<>();
+ ExcelSheetPO orderSheet = new ExcelSheetPO();
+ String title = happyActivity.getName() + "的订单";
+ orderSheet.setTitle(title);
+
+ String[] header = {"序号","用户", "编号", "单价", "数量","总价","使用状态", "支付方式"};
+ orderSheet.setHeaders(header);
+
+ List<HappyActivityOrder> orderListForExport = adminHappyActivityService.getOrderListForExport(params);
+ List<List<Object>> list = new ArrayList<>();
+ if (orderListForExport.size() > 0) {
+ int i = 0;
+ for (HappyActivityOrder item : orderListForExport) {
+ i++;
+ List<Object> temp = new ArrayList<>();
+ temp.add(i);
+ temp.add(item.getName());
+ temp.add(item.getOrderNo());
+ temp.add(item.getPrice());
+ temp.add(item.getNumCnt());
+ temp.add(item.getAmount());
+ temp.add(item.getState() == 2 ? "待使用" : "已使用");
+ temp.add(item.getPayType() == 0 ?"免费":"微信支付");
+ list.add(temp);
+ }
+ }
+ orderSheet.setDataList(list);
+ res.add(orderSheet);
+ response = ResponseHeadUtil.setExcelHead(response);
+ response.setHeader("Content-Disposition",
+ "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN) + ".xlsx".trim(), "UTF-8"));
+ OutputStream os = null;
+ os = response.getOutputStream();
+ ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, false);
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
index 99fd293..2363b7e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java
@@ -64,4 +64,6 @@
IPage<AdminActivityCommentVo> getCommentListInPage(AdminActivityCommentDto dto, QueryRequest request);
FebsResponse showStateSwitchOn(Long id);
+
+ List<HappyActivityOrder> getOrderListForExport(Map<String, String> params);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
index 737c688..6d95446 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
@@ -25,10 +25,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@@ -445,4 +442,38 @@
happyActivityCommentMapper.updateById(happyActivityComment);
return new FebsResponse().success().message("操作成功");
}
+
+ @Override
+ public List<HappyActivityOrder> getOrderListForExport(Map<String, String> params) {
+ LambdaQueryWrapper<HappyActivityOrder> queryWrapper = new LambdaQueryWrapper<>();
+ if(ObjectUtil.isNotEmpty(params.get("activityId"))){
+ queryWrapper.eq(HappyActivityOrder::getActivityId, Long.valueOf(params.get("activityId")));
+ }
+ List<Integer> stateList = Arrays.asList(StateUpDownEnum.ORDER_STATE_WAIT_USE.getCode(), StateUpDownEnum.ORDER_STATE_USED.getCode());
+ queryWrapper.in(HappyActivityOrder::getState, stateList);
+ queryWrapper.eq(HappyActivityOrder::getDeleteFlag, StateUpDownEnum.DOWN.getCode());
+ queryWrapper.orderByDesc(HappyActivityOrder::getState);
+ queryWrapper.orderByDesc(HappyActivityOrder::getId);
+ List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList(queryWrapper);
+
+ if(CollUtil.isNotEmpty(happyActivityOrders)){
+ Set<Long> collect = happyActivityOrders.stream().map(HappyActivityOrder::getMemberId).collect(Collectors.toSet());
+ List<MallMember> mallMembers = mallMemberMapper.selectList(
+ new LambdaQueryWrapper<MallMember>()
+ .select(MallMember::getId,MallMember::getName)
+ .in(MallMember::getId, collect)
+ );
+ Map<Long, MallMember> mallMemberMap = mallMembers.stream().collect(Collectors.toMap(MallMember::getId, mallMember -> mallMember));
+
+ happyActivityOrders.forEach(happyActivityOrder -> {
+ MallMember mallMember = mallMemberMap.get(happyActivityOrder.getMemberId());
+ if (ObjectUtil.isNotEmpty(mallMember)){
+ happyActivityOrder.setName(mallMember.getName());
+ }else{
+ happyActivityOrder.setName("");
+ }
+ });
+ }
+ return happyActivityOrders;
+ }
}
diff --git a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
index 310797c..48408fe 100644
--- a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
@@ -45,6 +45,9 @@
<div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
<i class="layui-icon"></i>
</div>
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="export" title="导出">
+ <i class="layui-icon"></i>
+ </div>
</div>
</div>
</form>
@@ -125,6 +128,7 @@
$view = $('#febs-activity-order'),
$query = $view.find('#query'),
$reset = $view.find('#reset'),
+ $export= $view.find('#export'),
$searchForm = $view.find('form'),
sortObject = {field: 'phone', type: null},
tableIns;
@@ -274,6 +278,19 @@
});
}
+ // 导出功能
+ $export.on('click', function () {
+ var params = getQueryParams();
+ let activityId = $searchForm.find("select[name='activityId']").val();
+ //如果活动ID为空,弹出提示请选择活动
+ if (activityId == null || activityId == '') {
+ febs.alert.warn('请选择活动');
+ return;
+ }
+ var queryString = Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}`).join('&');
+ window.location.href = ctx + 'admin/happyActivity/exportOrderList?' + queryString;
+ });
+
// 查询按钮
$query.on('click', function () {
var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
--
Gitblit v1.9.1