ParseEmailController.java 4.7 KB

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