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/resources/mapper/modules/HappyActivityOptionMapper.xml | 5 +- src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 6 +++ src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java | 15 +++++++ src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java | 3 + src/main/java/cc/mrbird/febs/mall/controller/activity/AdminVotesActivityCategoryController.java | 49 ++++++++++++++++++++++++ src/main/resources/templates/febs/views/modules/votesActivity/optionList.html | 2 src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java | 3 + 8 files changed, 81 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 825c909..aec3b58 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 @@ -5,19 +5,31 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.utils.RedisUtils; +import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; +import cc.mrbird.febs.common.utils.excl.ExcelUtil; +import cc.mrbird.febs.common.utils.excl.ExcelVersion; +import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; import cc.mrbird.febs.mall.dto.AdminHappyActivityCategoryDto; 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.service.IAdminHappyActivityService; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; import java.util.Map; @Slf4j @@ -243,4 +255,41 @@ return adminHappyActivityService.activityOrderDel(id); } + @SneakyThrows + @GetMapping("/exportOptionList") + public void exportOptionList(@RequestParam Map<String, String> params, HttpServletResponse response) { + List<ExcelSheetPO> res = new ArrayList<>(); + ExcelSheetPO orderSheet = new ExcelSheetPO(); + String title = "报名列表"; + orderSheet.setTitle(title); + String[] header = {"序号", "姓名", "联系方式", "兴趣爱好","家庭住址","地区","是否签约mcn机构", "备注"}; + orderSheet.setHeaders(header); + List<HappyActivityOption> dataList = adminHappyActivityService.getVoteOptionListForExport(params); + List<List<Object>> list = new ArrayList<>(); + if (dataList.size() > 0) { + int i = 0; + for (HappyActivityOption item : dataList) { + i++; + List<Object> temp = new ArrayList<>(); + temp.add(i); + temp.add(item.getOptionName()); + temp.add(item.getMobilePhone()); + temp.add(item.getHobby()); + temp.add(item.getAddress()); + temp.add(item.getProvince()+item.getCity()); + temp.add(item.getMcnState() == 1 ?"是":"否"); + temp.add(item.getDescription()); + 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(), "yyyyMMDDHHmmss") + ".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/mapper/HappyActivityMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java index 123c059..112e20a 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java @@ -26,5 +26,5 @@ Page<HappyActivityOrder> selectOrderInPage(Page<HappyActivityOrder> page, @Param("record")AdminHappyActivityOrderDto dto); - Page<ApiActivityOptionListVo> getVoteOptionRecordInPage(Page<ApiActivityOptionListVo> page, ApiVoteOptionRecordInPageDto dto); + Page<ApiActivityOptionListVo> getVoteOptionRecordInPage(Page<ApiActivityOptionListVo> page, @Param("record")ApiVoteOptionRecordInPageDto dto); } 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 94be14e..037fa1e 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminHappyActivityService.java @@ -11,6 +11,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; +import java.util.Map; public interface IAdminHappyActivityService extends IService<HappyActivity>{ @@ -56,4 +57,6 @@ FebsResponse checkOrder(AdminHappyActivityCheckOrderDto dto); FebsResponse activityOrderDel(Long id); + + List<HappyActivityOption> getVoteOptionListForExport(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 e1dddd9..af8d1dc 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 @@ -400,4 +400,19 @@ return new FebsResponse().success().message("操作成功"); } + + @Override + public List<HappyActivityOption> getVoteOptionListForExport(Map<String, String> params) { + LambdaQueryWrapper<HappyActivityOption> queryWrapper = new LambdaQueryWrapper<>(); + if(ObjectUtil.isNotEmpty(params.get("activityId"))){ + queryWrapper.eq(HappyActivityOption::getActivityId, Long.valueOf(params.get("activityId"))); + } + if(ObjectUtil.isNotEmpty(params.get("audit"))){ + queryWrapper.eq(HappyActivityOption::getState, Integer.valueOf(params.get("state"))); + } + if(ObjectUtil.isNotEmpty(params.get("beautyName"))){ + queryWrapper.like(HappyActivityOption::getOptionName, params.get("optionName")); + } + return happyActivityOptionMapper.selectList(queryWrapper); + } } 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 f42ac00..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 @@ -426,6 +426,12 @@ 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(); if(joinCnt < numCnt){ diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java index 3e296ba..b4d59b0 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java @@ -11,6 +11,9 @@ @ApiModelProperty(value = "选项ID") private Long id; + @ApiModelProperty(value = "选项编号") + private String orderCnt; + @ApiModelProperty(value = "选项名称") private String optionName; diff --git a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml index 5a464a5..50a1976 100644 --- a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml +++ b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml @@ -52,6 +52,7 @@ <select id="getVoteOptionInPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityOptionListVo"> select a.id as id, + a.order_cnt as orderCnt, a.option_name as optionName, a.image as image, a.likes_cnt as likesCnt @@ -63,7 +64,7 @@ <if test="record != null"> <if test="record.query != null and record.query != ''"> and ( - a.name like CONCAT('%', CONCAT(#{record.query}, '%')) + a.option_name like CONCAT('%', CONCAT(#{record.query}, '%')) or a.order_cnt = #{record.query} ) @@ -114,7 +115,7 @@ <if test="record != null"> <if test="record.query != null and record.query != ''"> and ( - a.name like CONCAT('%', CONCAT(#{record.query}, '%')) + a.option_name like CONCAT('%', CONCAT(#{record.query}, '%')) or a.order_cnt = #{record.query} ) diff --git a/src/main/resources/templates/febs/views/modules/votesActivity/optionList.html b/src/main/resources/templates/febs/views/modules/votesActivity/optionList.html index 52783e3..3d9b06e 100644 --- a/src/main/resources/templates/febs/views/modules/votesActivity/optionList.html +++ b/src/main/resources/templates/febs/views/modules/votesActivity/optionList.html @@ -222,7 +222,7 @@ var params = getQueryParams(); var queryString = Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}`).join('&'); - window.location.href = ctx + 'admin/votesOption/exportOptionList?' + queryString; + window.location.href = ctx + 'admin/happyActivity/exportOptionList?' + queryString; }); // 刷新按钮 $reset.on('click', function () { -- Gitblit v1.9.1