Browse Source

众筹全部写完

feature/0725lihuilin
jihaipeng 1 month ago
parent
commit
e397c3bd3d
  1. 42
      lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java
  2. 14
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/ExportController.java
  3. 36
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
  4. 5
      lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java
  5. 5
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/IFundingService.java
  6. 38
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java
  7. 2
      lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java
  8. 16
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java
  9. 105
      lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml
  10. 8
      lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml

42
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: 202507-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;
}
}

14
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: 202507-17 14:36
* @Version 1.0
**/
public class ExportController {
}

36
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<List<FundingActivityVo>> getFundingActivity(){
public Result<List<FundingActivityVo>> getFundingActivity() {
LOGGER.info("获取所有众筹活动");
List<FundingActivityVo> list = fundingService.getFundingActivity();
return Result.success(list);
List<FundingActivityVo> 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<Map<String, Object>> 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<Map<String, Object>> getActivityDate(@RequestParam Integer activityId ) {
LOGGER.info("接口getActivityDate查询后台数据统计,活动id为{}",activityId);
public Result<Map<String, Object>> 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<String> 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<String> 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<Map<String, Object> > getDate(@RequestParam Integer activityId) {
LOGGER.info("返回id={}的活动的设置数据详情",activityId);
public Result<Map<String, Object>> 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);
}
}

5
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<String> getMarketList();
Integer selectStatus();
String selectActivityName(Integer activityId);
List<FundingExport> selectByConditionExport(Integer activityId, String username, String jwcode, String marketSign);
}

5
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<String, Object> getDate(Integer activityId);
List getMarketList();
void exportActivityData(FundingUserDto fundingUserDto, HttpServletResponse response) throws IOException;
}

38
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<FundingExport> list = fundingMapper.selectByConditionExport(
fundingUserDto.getActivityId(),
fundingUserDto.getUsername(),
fundingUserDto.getJwcode(),
fundingUserDto.getMarketSign()
);
EasyExcel.write(response.getOutputStream(), FundingExport.class)
.excelType(ExcelTypeEnum.XLSX)
.sheet(activityName+"用户助力统计")
.doWrite(list);
}
}

2
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();
}

16
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: 202507-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);

105
lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml

@ -16,26 +16,26 @@
#{status},
#{startTime},
#{endTime},
#{createdTime},
#{createdTime},
#{updatedTime})
</insert>
<!-- <insert id="addRecord">-->
<!-- INSERT INTO z_user (activity_id,-->
<!-- username,-->
<!-- jwcode,-->
<!-- market_sign,-->
<!-- join_time)-->
<!-- VALUES (#{activityId},-->
<!-- #{username},-->
<!-- #{jwcode},-->
<!-- #{marketSign},-->
<!-- #{joinTime})-->
<!-- </insert>-->
<!-- <insert id="addRecord">-->
<!-- INSERT INTO z_user (activity_id,-->
<!-- username,-->
<!-- jwcode,-->
<!-- market_sign,-->
<!-- join_time)-->
<!-- VALUES (#{activityId},-->
<!-- #{username},-->
<!-- #{jwcode},-->
<!-- #{marketSign},-->
<!-- #{joinTime})-->
<!-- </insert>-->
<insert id="addDate">
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
</select>
<select id="searchcount" resultType="java.lang.Integer">
SELECT
@ -110,19 +110,15 @@
LIMIT #{pagesize} OFFSET #{offset}
</select>
<select id="searchPeopleTotal" resultType="java.lang.Integer" parameterType="java.lang.Integer">
SELECT
COUNT(DISTINCT jwcode)
SELECT COUNT(DISTINCT jwcode)
FROM z_user
WHERE
activity_id = #{activityId}
WHERE activity_id = #{activityId}
</select>
<select id="getMarket" resultType="java.util.Map" parameterType="java.lang.Integer">
SELECT
market_one,market_two
FROM
activity
WHERE
id = #{activityId}
SELECT market_one,
market_two
FROM activity
WHERE id = #{activityId}
</select>
<select id="searchMarketPeople" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT jwcode)
@ -132,12 +128,9 @@
</select>
<select id="searchVirtual" resultType="java.lang.Integer">
SELECT
add_total
FROM
data
WHERE
activity_id = #{activityId}
SELECT add_total
FROM data
WHERE activity_id = #{activityId}
and stock = #{stock}
</select>
<select id="getTime" resultType="java.lang.Integer">
@ -150,27 +143,45 @@
and stock = #{stock}
</select>
<select id="getMarketList" resultType="string">
SELECT
text
FROM
market
SELECT text
FROM market
</select>
<select id="selectStatus" resultType="java.lang.Integer">
SELECT
count(*)
FROM
activity
WHERE
status = 1
SELECT count(*)
FROM activity
WHERE status = 1
</select>
<select id="searchMarketTotal" resultType="java.lang.Integer">
SELECT
COUNT(*)
SELECT COUNT(*)
FROM z_user
WHERE
market_sign = #{marketSign}
WHERE market_sign = #{marketSign}
AND activity_id = #{activityId}
</select>
<select id="selectActivityName" resultType="java.lang.String">
SELECT activity_name
FROM activity
WHERE id = #{activityId}
</select>
<select id="selectByConditionExport" resultType="com.lottery.entity.FundingExport">
SELECT
username, jwcode, market_sign, join_time
FROM
z_user
WHERE
activity_id = #{activityId}
<if test="username != null and username != ''">
AND username LIKE CONCAT('%', #{username}, '%')
</if>
<if test="jwcode != null and jwcode != ''">
AND jwcode = #{jwcode}
</if>
<if test="marketSign != null and marketSign != ''">
AND market_sign = #{marketSign}
</if>
ORDER BY join_time DESC
</select>
</mapper>

8
lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml

@ -67,6 +67,14 @@
order by join_time desc
LIMIT 1
</select>
<select id="selectStatusCount" resultType="java.lang.Integer">
SELECT
count(*)
FROM
activity
WHERE
status = 1
</select>
</mapper>
Loading…
Cancel
Save