ParseEmailController.java 4.5 KB

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