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