From e397c3bd3dd6b686992352bb1008bbf0e6bd28d9 Mon Sep 17 00:00:00 2001 From: jihaipeng <3204568531@qq.com> Date: Thu, 17 Jul 2025 15:02:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=97=E7=AD=B9=E5=85=A8=E9=83=A8=E5=86=99?= =?UTF-8?q?=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/lottery/entity/FundingExport.java | 42 +++++++++ .../lottery/admin/controller/ExportController.java | 14 +++ .../admin/controller/FundingController.java | 36 ++++--- .../com/lottery/admin/mapper/IFundingMapper.java | 5 + .../com/lottery/admin/service/IFundingService.java | 5 + .../admin/service/Impl/FundingServiceImpl.java | 38 ++++++++ .../com/lottery/api/mapper/ApiIFundingMapper.java | 2 + .../api/service/Impl/ApiFundingServiceImpl.java | 16 +++- .../main/resources/mapper/admin/fundingMapper.xml | 105 ++++++++++++--------- .../resources/mapper/api/ApiIFundingService.xml | 8 ++ 10 files changed, 210 insertions(+), 61 deletions(-) create mode 100644 lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/ExportController.java diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java new file mode 100644 index 0000000..b2fa3b7 --- /dev/null +++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java @@ -0,0 +1,42 @@ +package com.lottery.entity; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @program: lottery-system + * @ClassName FundingExport + * @description: + * @author:jihaipeng + * @create: 2025−07-17 10:49 + * @Version 1.0 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FundingExport { + + @ExcelProperty("用户名") + private String username; // 用户名 + @ExcelProperty("精网号") // 定义 Excel 表头为“用户唯一码” + private String jwcode; // 用户唯一码 + @ExcelProperty("市场") // 定义 Excel 表头为“市场标识” + private String marketSign; // 市场标识(usa/hk) + + @ExcelProperty("参与时间") // 定义 Excel 表头为“参与时间” + private LocalDateTime joinTime; // 参与时间 + // 方法1:通过 @JsonFormat 直接格式化(适用于JSON序列化) + + @JsonFormat(pattern = "yyyy年M月d日 HH:mm") + public LocalDateTime getJoinTime() { + return joinTime; + } +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/ExportController.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/ExportController.java new file mode 100644 index 0000000..692b8bc --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/ExportController.java @@ -0,0 +1,14 @@ +package com.lottery.admin.controller; + +/** + * @program: lottery-system + * @ClassName ExportController + * @description: + * @author:jihaipeng + * @create: 2025−07-17 14:36 + * @Version 1.0 + **/ + +public class ExportController { + +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java index 1ad7b7f..fbf15f9 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java @@ -14,6 +14,10 @@ import org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -38,19 +42,20 @@ public class FundingController { /** * 获取所有众筹活动 + * * @return */ @GetMapping("/getActivity") - public Result> getFundingActivity(){ + public Result> getFundingActivity() { LOGGER.info("获取所有众筹活动"); - List list = fundingService.getFundingActivity(); - return Result.success(list); + List list = fundingService.getFundingActivity(); + return Result.success(list); } //修改众筹的活动状态 @PostMapping("/updateActivityStatus") - public Result updateActivityStatus(@RequestParam @Validated Integer id, @RequestParam @Validated Integer status) { + public Result updateActivityStatus(@RequestParam @Validated Integer id, @RequestParam @Validated Integer status) { LOGGER.info("修改的众筹活动id为{},修改的众筹活动状态为{}", id, status); // 参数校验 if (id == null || status == null) { @@ -85,7 +90,7 @@ public class FundingController { //根据活动id查询助力详情 @PostMapping("/getActivityDetail") public Result> getActivityDetail(@RequestBody FundingUserDto fundingUserDto) { - LOGGER.info("接口getActivityDetail查询助力详情,查询条件{}",fundingUserDto); + LOGGER.info("接口getActivityDetail查询助力详情,查询条件{}", fundingUserDto); // 必填参数校验(可选,但推荐) if (fundingUserDto.getActivityId() == null) { throw new IllegalArgumentException("activityId 不能为空"); @@ -95,8 +100,8 @@ public class FundingController { // //根据活动id查询数据统计 @PostMapping("/getActivityDate") - public Result> getActivityDate(@RequestParam Integer activityId ) { - LOGGER.info("接口getActivityDate查询后台数据统计,活动id为{}",activityId); + public Result> getActivityDate(@RequestParam Integer activityId) { + LOGGER.info("接口getActivityDate查询后台数据统计,活动id为{}", activityId); return Result.success(fundingService.getActivityDate(activityId)); } @@ -109,21 +114,21 @@ public class FundingController { //设置活动初始活动 @PostMapping("/setActivityTime") public Result setActivityTime(@RequestParam Integer activityId, @RequestParam Integer time) { - LOGGER.info("设置id={}的活动初始时间为{}",activityId,time); + LOGGER.info("设置id={}的活动初始时间为{}", activityId, time); return fundingService.setActivityTime(activityId, time); } //添加虚拟次数 @PostMapping("/addDateVirtual") public Result addVirtual(@RequestParam Integer activityId, @RequestParam String stock, @RequestParam Integer addTotal) { - LOGGER.info("添加虚拟次数,id={},stock={},addTotal={}",activityId,stock,addTotal); + LOGGER.info("添加虚拟次数,id={},stock={},addTotal={}", activityId, stock, addTotal); return fundingService.addVirtual(activityId, stock, addTotal); } //返回数据详情 @PostMapping("/getDate") - public Result > getDate(@RequestParam Integer activityId) { - LOGGER.info("返回id={}的活动的设置数据详情",activityId); + public Result> getDate(@RequestParam Integer activityId) { + LOGGER.info("返回id={}的活动的设置数据详情", activityId); return Result.success(fundingService.getDate(activityId)); } @@ -134,4 +139,13 @@ public class FundingController { return Result.success(fundingService.getMarketList()); } + //导出活动数据 + @PostMapping("/exportActivityData") + public void exportActivityData(@RequestBody FundingUserDto fundingUserDto, HttpServletResponse response) throws IOException { + LOGGER.info("导出活动数据,参数为{}", fundingUserDto); + fundingService.exportActivityData(fundingUserDto,response); + + } + + } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java index 9492003..5c10cff 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java @@ -1,6 +1,7 @@ package com.lottery.admin.mapper; import com.lottery.entity.Activity; +import com.lottery.entity.FundingExport; import com.lottery.vo.FundingActivityVo; import com.lottery.vo.FundingUserVo; import org.apache.ibatis.annotations.Mapper; @@ -57,4 +58,8 @@ public interface IFundingMapper { List getMarketList(); Integer selectStatus(); + + String selectActivityName(Integer activityId); + + List selectByConditionExport(Integer activityId, String username, String jwcode, String marketSign); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/IFundingService.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/IFundingService.java index ef60574..be4a0c3 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/IFundingService.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/IFundingService.java @@ -7,6 +7,8 @@ import com.lottery.result.Result; import com.lottery.vo.FundingActivityVo; import com.lottery.vo.FundingUserVo; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -41,4 +43,7 @@ public interface IFundingService { Map getDate(Integer activityId); List getMarketList(); + + void exportActivityData(FundingUserDto fundingUserDto, HttpServletResponse response) throws IOException; + } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java index f458499..3590078 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java @@ -1,5 +1,7 @@ package com.lottery.admin.service.Impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.support.ExcelTypeEnum; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.lottery.dto.FundingActivityDto; @@ -8,6 +10,7 @@ import com.lottery.dto.FundingUserDto; import com.lottery.entity.Activity; import com.lottery.admin.mapper.IFundingMapper; import com.lottery.admin.service.IFundingService; +import com.lottery.entity.FundingExport; import com.lottery.result.Result; import com.lottery.utils.ConvertBeanUtil; import com.lottery.utils.HttpUtils; @@ -17,6 +20,9 @@ import com.lottery.vo.FundingUserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; @@ -270,5 +276,37 @@ public class FundingServiceImpl implements IFundingService { public List getMarketList() { return fundingMapper.getMarketList(); } + + +//导出数据 + @Override + public void exportActivityData(FundingUserDto fundingUserDto, HttpServletResponse response) throws IOException { + response.setContentType("application/json.openxmlfomats-officedocument.spreadsheetml.sheet;charset=utf-8"); + response.setCharacterEncoding("utf-8"); + //根据活动id查询活动名称 + String activityName = fundingMapper.selectActivityName(fundingUserDto.getActivityId()); + + // 3. 处理中文文件名(URL 编码) + String fileName = activityName + ".xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + + // 4. 设置 Content-Disposition 响应头(指定下载文件名) + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + + + + // 查询数据列表 + List list = fundingMapper.selectByConditionExport( + fundingUserDto.getActivityId(), + fundingUserDto.getUsername(), + fundingUserDto.getJwcode(), + fundingUserDto.getMarketSign() + ); + + EasyExcel.write(response.getOutputStream(), FundingExport.class) + .excelType(ExcelTypeEnum.XLSX) + .sheet(activityName+"用户助力统计") + .doWrite(list); + } } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java b/lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java index 4f52106..a425e3b 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java @@ -32,4 +32,6 @@ public interface ApiIFundingMapper { void addRecord(Integer activityId, String username, String jwcode, String marketSign, LocalDateTime joinTime); LocalDate selectCount(String jwcode, String marketSign,Integer activityId); + + Integer selectStatusCount(); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java index cf1d5eb..291caa8 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java @@ -9,6 +9,7 @@ import com.lottery.result.Result; import com.lottery.utils.HttpUtils; import com.lottery.vo.ApiFundingTimeVo; import com.lottery.vo.ApiFundingVO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,6 +26,7 @@ import java.util.Map; * @create: 2025−07-16 11:07 * @Version 1.0 **/ +@Slf4j @Service public class ApiFundingServiceImpl implements ApiIFundingService { @@ -93,10 +95,18 @@ public class ApiFundingServiceImpl implements ApiIFundingService { @Override public Result getActivityDetailOne(String token) { //根据活动id查询活动时间,市场一,市场二,设置的初始时间,俩个市场总助力次数 + //先查询一下有几个活动开启 + + Integer count = fundingMapper.selectStatusCount(); + if (count == null || count < 0 || count > 1) { + // 根据业务逻辑,这里可以分别处理count为null、小于0和大于1的情况 + // 但为了简化示例,我们统一返回一个失败结果 + return Result.failure("活动数量不符合要求,请检查并关闭多余的活动"); + } + Integer activityId = fundingMapper.selectStatus(); - if(activityId==null){ - return Result.failure("没有活动开启"); - } + + //根据活动id查询俩个市场,俩个市场是一条数据 ApiFundingTimeVo data= fundingMapper.getMarket(activityId); diff --git a/lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml b/lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml index 0e23c50..3728664 100644 --- a/lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml +++ b/lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml @@ -16,26 +16,26 @@ #{status}, #{startTime}, #{endTime}, - #{createdTime}, + #{createdTime}, #{updatedTime}) - - - - - - - - - - - - + + + + + + + + + + + + INSERT INTO data (time, - stock, - add_total, - activity_id) + stock, + add_total, + activity_id) VALUES (#{time}, #{stock}, #{addTotal}, @@ -72,7 +72,7 @@ ELSE '禁用' END FROM activity - ORDER BY created_time DESC + ORDER BY created_time DESC + + + + \ No newline at end of file diff --git a/lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml b/lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml index 4d9129a..f20b54a 100644 --- a/lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml +++ b/lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml @@ -67,6 +67,14 @@ order by join_time desc LIMIT 1 + \ No newline at end of file