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