You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.8 KiB

6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
6 days ago
  1. package com.example.demo.serviceImpl;
  2. import com.example.demo.domain.DTO.GoldDetailDTO;
  3. import com.example.demo.domain.entity.User;
  4. import com.example.demo.domain.vo.GoldDetail;
  5. import com.example.demo.domain.vo.Result;
  6. import com.example.demo.domain.vo.Total;
  7. import com.example.demo.mapper.GoldDetailMapper;
  8. import com.example.demo.service.GoldDetailService;
  9. import com.fasterxml.jackson.databind.ObjectMapper;
  10. import com.github.pagehelper.PageHelper;
  11. import com.github.pagehelper.PageInfo;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.io.IOException;
  15. import java.time.LocalDateTime;
  16. import java.time.format.DateTimeFormatter;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * @program: GOLD
  22. * @ClassName GoldDetailServiceImpl
  23. * @description:
  24. * @author: huangqizhen
  25. * @create: 202506-23 13:44
  26. * @Version 1.0
  27. **/
  28. @Service
  29. public class GoldDetailServiceImpl implements GoldDetailService {
  30. @Autowired
  31. private GoldDetailMapper goldDetailMapper;
  32. @Override
  33. public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) {
  34. PageHelper.startPage(pageNum, pageSize);
  35. List<GoldDetail> list = goldDetailMapper.getGoldDetail(goldDetail);
  36. return new PageInfo<>(list);
  37. }
  38. @Override
  39. public Total getTotal(GoldDetail goldDetail) {
  40. return goldDetailMapper.getTotal(goldDetail);
  41. }
  42. @Override
  43. public PageInfo<User> getGold(Integer pageNum, Integer pageSize, User user) {
  44. PageHelper.startPage(pageNum, pageSize);
  45. List<User> list = goldDetailMapper.getGold(user);
  46. return new PageInfo<>(list);
  47. }
  48. @Override
  49. public Total GoldTotal(User user) {
  50. return goldDetailMapper.GoldTotal(user);
  51. }
  52. @Override
  53. public Result addExportRecord(GoldDetailDTO dto) {
  54. // 获取操作者 jwcode
  55. // 生成文件名
  56. String fileName = String.format("%s_%s_%s.xlsx",
  57. "客户金币明细",
  58. "操作人",
  59. LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
  60. System.out.println(fileName);
  61. dto.setJwcode(123456);
  62. dto.setUrl("");
  63. dto.setFileName(fileName);
  64. dto.setDataNum(0);
  65. try{
  66. // 调用方式
  67. GoldDetailMapper.ExportRecordIdHolder idHolder = new AiEmotionMapper.ExportRecordIdHolder();
  68. goldDetailMapper.insertExportRecord(
  69. idHolder, // 用于接收主键
  70. dto.getJwcode(),
  71. dto.getType(),
  72. dto.getState(),
  73. dto.getUrl(),
  74. dto.getFileName(),
  75. dto.getDataNum()
  76. );
  77. // 获取主键
  78. Long recordId = idHolder.getId();
  79. // 2. 构造完整的 JSON 数据(包含所有请求参数)
  80. Map<String, Object> exportData = new HashMap<>();
  81. exportData.put("recordId", recordId);
  82. // 手动构造请求数据(避免 toString() 只返回部分字段)
  83. Map<String, Object> requestData = new HashMap<>();
  84. requestData.put("text", dto.getText());
  85. requestData.put("sort", dto.getSort());
  86. requestData.put("field", dto.getField());
  87. requestData.put("deptId", dto.getDeptid());
  88. exportData.put("requestData", requestData);
  89. // 3. 发送到 Redis 消息队列
  90. String jsonData = new ObjectMapper().writeValueAsString(exportData);
  91. redisUtil.sendMessage("hwgold:queue:export_queue", jsonData);
  92. }catch (Exception e){
  93. e.printStackTrace();
  94. throw new SystemException("导出数据异常,请稍后重试", e);
  95. }
  96. return Result.success();
  97. }
  98. }
  99. }
  100. }