package com.example.demo.serviceImpl; import com.example.demo.domain.DTO.GoldDetailDTO; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.GoldDetail; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Total; import com.example.demo.mapper.GoldDetailMapper; import com.example.demo.service.GoldDetailService; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @program: GOLD * @ClassName GoldDetailServiceImpl * @description: * @author: huangqizhen * @create: 2025−06-23 13:44 * @Version 1.0 **/ @Service public class GoldDetailServiceImpl implements GoldDetailService { @Autowired private GoldDetailMapper goldDetailMapper; @Override public PageInfo getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { PageHelper.startPage(pageNum, pageSize); List list = goldDetailMapper.getGoldDetail(goldDetail); return new PageInfo<>(list); } @Override public Total getTotal(GoldDetail goldDetail) { return goldDetailMapper.getTotal(goldDetail); } @Override public PageInfo getGold(Integer pageNum, Integer pageSize, User user) { PageHelper.startPage(pageNum, pageSize); List list = goldDetailMapper.getGold(user); return new PageInfo<>(list); } @Override public Total GoldTotal(User user) { return goldDetailMapper.GoldTotal(user); } @Override public Result addExportRecord(GoldDetailDTO dto) { // 获取操作者 jwcode // 生成文件名 String fileName = String.format("%s_%s_%s.xlsx", "客户金币明细", "操作人", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); System.out.println(fileName); dto.setJwcode(123456); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); try{ // 调用方式 GoldDetailMapper.ExportRecordIdHolder idHolder = new AiEmotionMapper.ExportRecordIdHolder(); goldDetailMapper.insertExportRecord( idHolder, // 用于接收主键 dto.getJwcode(), dto.getType(), dto.getState(), dto.getUrl(), dto.getFileName(), dto.getDataNum() ); // 获取主键 Long recordId = idHolder.getId(); // 2. 构造完整的 JSON 数据(包含所有请求参数) Map exportData = new HashMap<>(); exportData.put("recordId", recordId); // 手动构造请求数据(避免 toString() 只返回部分字段) Map requestData = new HashMap<>(); requestData.put("text", dto.getText()); requestData.put("sort", dto.getSort()); requestData.put("field", dto.getField()); requestData.put("deptId", dto.getDeptid()); exportData.put("requestData", requestData); // 3. 发送到 Redis 消息队列 String jsonData = new ObjectMapper().writeValueAsString(exportData); redisUtil.sendMessage("hwgold:queue:export_queue", jsonData); }catch (Exception e){ e.printStackTrace(); throw new SystemException("导出数据异常,请稍后重试", e); } return Result.success(); } } } }