ParseEmailController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.simuwang.manage.api.email;
  2. import com.simuwang.base.common.support.MybatisPage;
  3. import com.simuwang.base.common.util.EncodeUtil;
  4. import com.simuwang.base.pojo.dto.query.EmailFileQuery;
  5. import com.simuwang.base.pojo.dto.query.EmailParseQuery;
  6. import com.simuwang.base.pojo.vo.*;
  7. import com.simuwang.daq.service.EmailParseApiService;
  8. import com.simuwang.manage.service.ParseEmailService;
  9. import com.smppw.common.pojo.ResultVo;
  10. import com.smppw.common.pojo.enums.TimeRange;
  11. import jakarta.servlet.ServletOutputStream;
  12. import jakarta.servlet.http.HttpServletRequest;
  13. import jakarta.servlet.http.HttpServletResponse;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.*;
  18. import java.io.FileInputStream;
  19. import java.io.FileOutputStream;
  20. import java.io.IOException;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * 解析详情管理
  25. * Author: chenjianhua
  26. * Date: 2024/9/10 11:21
  27. * Description: ${DESCRIPTION}
  28. */
  29. @RestController
  30. @RequestMapping("/v1/parse")
  31. public class ParseEmailController{
  32. private static final Logger logger = LoggerFactory.getLogger(ParseEmailController.class);
  33. @Autowired
  34. private ParseEmailService parseEmailService;
  35. @Autowired
  36. private EmailParseApiService emailParseApiService;
  37. /**
  38. * 保存邮件类型识别配置
  39. * @param emailTypeRuleVO
  40. * @return
  41. */
  42. @PostMapping("/save-email-type")
  43. public boolean saveEmailType(@RequestBody EmailTypeRuleVO emailTypeRuleVO){
  44. parseEmailService.saveEmailType(emailTypeRuleVO);
  45. return true;
  46. }
  47. /**
  48. * 查询邮件类型识别配置
  49. * @param
  50. * @return
  51. */
  52. @GetMapping("/search-email-type")
  53. public ResultVo searchEmailType(){
  54. EmailTypeRuleVO emailTypeRuleVO = parseEmailService.searchEmailType();
  55. return ResultVo.ok(emailTypeRuleVO);
  56. }
  57. /**
  58. * 邮箱配置页面展示查询
  59. * @param emailParseQuery
  60. * @return
  61. */
  62. @GetMapping("/search-email-list")
  63. public MybatisPage<EmailParseInfoVO> searchEmailList(EmailParseQuery emailParseQuery){
  64. MybatisPage<EmailParseInfoVO> result = parseEmailService.searchEmailList(emailParseQuery);
  65. return result;
  66. }
  67. /**
  68. * 详情查询
  69. * @param emailFileQuery
  70. * @return
  71. */
  72. @GetMapping("/detail")
  73. public MybatisPage<EmailParseDetailVO> searchEmailDetail(EmailFileQuery emailFileQuery){
  74. MybatisPage<EmailParseDetailVO> result = parseEmailService.searchEmailDetailById(emailFileQuery);
  75. return result;
  76. }
  77. /**
  78. * 解析邮件数据统计
  79. * @param timeRange Last1Week-近一周,Last1Month-近一个月,Last3Months-近三月,LastHalfYear-近半年,Last1Year-近一年,FromSetup-全部,Custom-自定义
  80. * @return
  81. */
  82. @GetMapping("/search-email-count")
  83. public ResultVo searchEmailCount(@RequestParam("timeRange") TimeRange timeRange,@RequestParam(value = "startDate",required = false)String startDate,@RequestParam(value = "endDate",required = false)String endDate){
  84. Map<String,Integer> result = parseEmailService.searchEmailCount(timeRange,startDate,endDate);
  85. return ResultVo.ok(result);
  86. }
  87. /**
  88. * 根据fileId下载邮件附件
  89. * @param fileId
  90. * @return
  91. */
  92. @PostMapping("/download-email-file")
  93. public void downloadEmailFile(@RequestParam("fileId") Integer fileId, HttpServletResponse response, HttpServletRequest request){
  94. try {
  95. EmailFileInfoVO emailFileInfoVO = parseEmailService.getEmailFileById(fileId);
  96. FileInputStream fileInputStream = new FileInputStream(emailFileInfoVO.getFilePath());
  97. response.setContentType("application/octet-stream");
  98. response.addHeader("Content-Disposition", "attachment;filename=" + EncodeUtil.encodeUTF8(emailFileInfoVO.getFileName()));
  99. ServletOutputStream outputStream = response.getOutputStream();
  100. byte[] b = new byte[1024];
  101. while(fileInputStream.read(b) > 0){
  102. outputStream.write(b);
  103. }
  104. fileInputStream.close();
  105. outputStream.flush();
  106. outputStream.close();
  107. } catch (IOException e) {
  108. logger.error(e.getMessage(),e);
  109. }
  110. }
  111. /**
  112. * 根据邮件ID重新解析
  113. * @param idVo
  114. * @return
  115. */
  116. @GetMapping("/reparse")
  117. public ResultVo reparse(IdVO idVo){
  118. emailParseApiService.reparseEmail(idVo.getId());
  119. return ResultVo.ok(true);
  120. }
  121. }