package com.simuwang.manage.api.email; import com.simuwang.base.common.page.TableDataInfo; import com.simuwang.base.common.result.AjaxResult; import com.simuwang.base.common.util.EncodeUtil; import com.simuwang.base.pojo.vo.EmailFileInfoVO; import com.simuwang.base.pojo.vo.EmailParseInfoVO; import com.simuwang.base.pojo.vo.EmailTypeRuleVO; import com.simuwang.manage.api.base.BaseController; import com.simuwang.manage.service.ParseEmailService; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.ibatis.annotations.Param; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Map; /** * FileName: ParseEmailController * Author: chenjianhua * Date: 2024/9/10 11:21 * Description: ${DESCRIPTION} */ @RestController @RequestMapping("/v1/parse") public class ParseEmailController extends BaseController { @Autowired private ParseEmailService parseEmailService; /** * 保存邮件类型识别配置 * @param emailTypeRuleVO * @return */ @PostMapping("/save-email-type") public AjaxResult saveEmailType(@RequestBody EmailTypeRuleVO emailTypeRuleVO){ try{ parseEmailService.saveEmailType(emailTypeRuleVO); }catch (Exception e){ logger.error(e.getMessage(),e); return AjaxResult.error("保存失败"); } return AjaxResult.success(); } /** * 查询邮件类型识别配置 * @param * @return */ @GetMapping("/search-email-type") public AjaxResult searchEmailType(){ EmailTypeRuleVO emailTypeRuleVO = new EmailTypeRuleVO(); try{ emailTypeRuleVO = parseEmailService.searchEmailType(); }catch (Exception e){ logger.error(e.getMessage(),e); return AjaxResult.error("查询失败"); } return AjaxResult.success(emailTypeRuleVO); } /** * 表格查询 * @param emailTitle * @param emailType * @param parseStatus * @return */ @GetMapping("/search-email-list") public TableDataInfo searchEmailList(@RequestParam(value = "emailTitle",required = false)String emailTitle, @RequestParam(value = "emailType",required = false)Integer emailType, @RequestParam(value = "parseStatus",required = false)Integer parseStatus){ List result = parseEmailService.searchEmailList(emailTitle,emailType,parseStatus); return getDataTable(result); } /** * 详情查询 * @param id * @return */ @GetMapping("/{id}") public AjaxResult searchEmail(@PathVariable("id") Integer id){ EmailParseInfoVO result = parseEmailService.searchEmailById(id); return AjaxResult.success(result); } /** * 解析邮件数据统计 * @param parseDate * @return */ @GetMapping("/search-email-count") public AjaxResult searchEmailCount(@RequestParam("parseDate") String parseDate){ Map result = parseEmailService.searchEmailCount(parseDate); return AjaxResult.success(result); } /** * 下载邮件附件 * @param fileId * @return */ @PostMapping("/download-email-file") public void downloadEmailFile(@RequestParam("fileId") Integer fileId, HttpServletResponse response, HttpServletRequest request){ try { EmailFileInfoVO emailFileInfoVO = parseEmailService.getEmailFileById(fileId); FileInputStream fileInputStream = new FileInputStream(emailFileInfoVO.getFilePath()); response.setContentType("application/octet-stream"); response.addHeader("Content-Disposition", "attachment;filename=" + EncodeUtil.encodeUTF8(emailFileInfoVO.getFileName())); ServletOutputStream outputStream = response.getOutputStream(); byte[] b = new byte[1024]; while(fileInputStream.read(b) > 0){ outputStream.write(b); } fileInputStream.close(); outputStream.flush(); outputStream.close(); } catch (IOException e) { logger.error(e.getMessage(),e); } } /** * 重新解析 * @param id * @return */ @GetMapping("/reparse/{id}") public AjaxResult reparse(@PathVariable("id")Integer id){ return AjaxResult.success(); } }