Commit bbc35999 by chentianzhong

提一个版本

parent 827fd30d
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
</parent> </parent>
<groupId>com.zq</groupId> <groupId>com.zq</groupId>
<artifactId>email-server</artifactId> <artifactId>oa-email-server</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
<name>email-server</name> <name>oa-email-server</name>
<description>内部邮件后端服务</description> <description>内部邮件后端服务</description>
<properties> <properties>
...@@ -153,6 +153,7 @@ ...@@ -153,6 +153,7 @@
<version>1.4.7</version> <version>1.4.7</version>
</dependency> </dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
...@@ -254,7 +255,7 @@ ...@@ -254,7 +255,7 @@
<properties> <properties>
<profiles.active>test</profiles.active> <profiles.active>test</profiles.active>
<logging.level>debug</logging.level> <logging.level>debug</logging.level>
<eureka.server.url>http://admin:GXfy2021@147.2.3.2:8800/eureka/</eureka.server.url> <eureka.server.url>http://admin:GXfy2021@147.2.3.14:8800/eureka/</eureka.server.url>
</properties> </properties>
</profile> </profile>
<profile> <profile>
......
...@@ -78,7 +78,6 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -78,7 +78,6 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
Map<String, Set<String>> anonymousUrls = getAnonymousUrl(handlerMethodMap); Map<String, Set<String>> anonymousUrls = getAnonymousUrl(handlerMethodMap);
Set<String> allType = anonymousUrls.get(RequestMethodEnum.ALL.getType()); Set<String> allType = anonymousUrls.get(RequestMethodEnum.ALL.getType());
//不使用注解的时候在这添加url放行 //不使用注解的时候在这添加url放行
allType.add("/data/file/sealPlatform/**");//放行静态资源
httpSecurity httpSecurity
// 禁用 CSRF // 禁用 CSRF
.csrf().disable() .csrf().disable()
......
...@@ -2,21 +2,30 @@ package com.zq.email.controller; ...@@ -2,21 +2,30 @@ package com.zq.email.controller;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.zq.common.annotation.AnonymousAccess; import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.annotation.rest.AnonymousGetMapping;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailAttach; import com.zq.email.entity.EmailAttach;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson; import com.zq.email.entity.EmailPerson;
import com.zq.email.feign.FileFeignClient;
import com.zq.email.service.IEmailAttachService; import com.zq.email.service.IEmailAttachService;
import com.zq.email.vo.EmailDetailVo; import com.zq.email.vo.EmailDetailVo;
import com.zq.email.vo.FileViewVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -24,6 +33,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -24,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap;
/** /**
* <p> * <p>
...@@ -41,23 +51,24 @@ import java.nio.charset.StandardCharsets; ...@@ -41,23 +51,24 @@ import java.nio.charset.StandardCharsets;
public class EmailAttachController { public class EmailAttachController {
private final IEmailAttachService emailAttachService; private final IEmailAttachService emailAttachService;
@Value("${spring.cloud.config.profile") private final FileFeignClient fileFeignClient;
@Value("${spring.cloud.config.profile}")
private String profile; private String profile;
@ApiOperation("获取附件") @ApiOperation("获取附件")
@PostMapping @PostMapping
public ResultVo detail(@RequestBody EmailDetailVo vo) { public ResultVo emailAttach(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId"); AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailAttachService.findByContentId(vo.getContentId())); return ResultVo.success(emailAttachService.findByContentId(vo.getContentId()));
} }
@ApiOperation("下载附件") @ApiOperation("下载附件")
@AnonymousAccess @AnonymousGetMapping("/download/{id}")
@GetMapping("/download/{id}")
public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) { public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) {
EmailAttach emailAttach = emailAttachService.getById(id); EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败"); AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath(); String download = emailAttach.getDownloadPath();
log.info("文件下载地址1111:{}", download);
if (StrUtil.isBlank(download)){ if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy"); String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM"); String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
...@@ -68,7 +79,12 @@ public class EmailAttachController { ...@@ -68,7 +79,12 @@ public class EmailAttachController {
}else if (profile.equals("wanpro") || profile.equals("wantest")){ }else if (profile.equals("wanpro") || profile.equals("wantest")){
download = "http://172.28.1.159:82/attwjsf_yj" + path; download = "http://172.28.1.159:82/attwjsf_yj" + path;
} }
}else{
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
} }
log.info("文件下载地址2222:{}", download);
AssertUtils.hasText(download, "下载地址为空"); AssertUtils.hasText(download, "下载地址为空");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try { try {
...@@ -88,8 +104,85 @@ public class EmailAttachController { ...@@ -88,8 +104,85 @@ public class EmailAttachController {
AssertUtils.isTrue(false, "网络异常,下载文件失败"); AssertUtils.isTrue(false, "网络异常,下载文件失败");
} }
}
@ApiOperation("查看附件下载地址")
@GetMapping("/downloadPath/{id}")
public ResultVo downloadPath(@PathVariable("id") String id) {
EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
log.info("文件下载地址 downloadPath 1111:{}", download);
if (StrUtil.isBlank(download)) {
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
} else if (profile.equals("wanpro") || profile.equals("wantest")) {
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
} else {
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
AssertUtils.hasText(download, "获取到的下载地址为空");
return ResultVo.success(download);
}
@ApiOperation("wps预览")
@GetMapping("/viewFileByWps/{id}")
public ResultVo viewFileByWps(@PathVariable("id") String id) {
OnlineUserDto adminContext = TokenUtils.getAdminContext();
AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!");
EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
AssertUtils.notNull(emailAttach.getAttachName(), "附件名称为空");
String suffix = emailAttach.getAttachName().substring(emailAttach.getAttachName().lastIndexOf(".") + 1);
String download = emailAttach.getDownloadPath();
log.info("文件下载地址 downloadPath 1111:{}", download);
if (StrUtil.isBlank(download)) {
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
} else if (profile.equals("wanpro") || profile.equals("wantest")) {
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
} else {
if (profile.equals("wanpro") || profile.equals("wantest")) {
download.replaceAll("147.2.3.3", "172.28.1.70");
}
}
log.info("文件下载地址 downloadPath 222:{}", download);
AssertUtils.hasText(download, "获取到的下载地址为空");
//调用文件服务wps
FileViewVo viewVo = new FileViewVo();
viewVo.setFileId(IdUtil.fastSimpleUUID());
viewVo.setDownloadPath(download);
viewVo.setFileType(suffix);
viewVo.setFileName(emailAttach.getAttachName());
viewVo.setUserId(String.valueOf(adminContext.getUserId()));
ResultVo<String> resultVo = fileFeignClient.getViewUrlByDownloadPath(viewVo);
log.info("中台返回结果:"+ JSONUtil.toJsonStr(resultVo));
String linkUrl = "";
if (resultVo.isSuccess() && StrUtil.isNotBlank(resultVo.getData())){
linkUrl = resultVo.getData();
}
AssertUtils.hasText(linkUrl, "调用wps组件失败,失败原因("+resultVo.getErrMsg()+")");
return ResultVo.success(linkUrl);
} }
} }
...@@ -4,6 +4,7 @@ package com.zq.email.controller; ...@@ -4,6 +4,7 @@ package com.zq.email.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils; import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto; import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
...@@ -198,6 +199,14 @@ public class EmailController { ...@@ -198,6 +199,14 @@ public class EmailController {
@ApiOperation("最近联系人")
@GetMapping("recentlyContacts")
public ResultVo recentlyContacts() {
//最近20条邮件
List<Long> recentlySendEmail = emailContentService.findRecentlySendEmail(20);
return ResultVo.success(emailPersonService.recentlyContacts(recentlySendEmail));
}
......
...@@ -35,7 +35,7 @@ public class EmailPersonController { ...@@ -35,7 +35,7 @@ public class EmailPersonController {
private final IEmailPersonService emailPersonService; private final IEmailPersonService emailPersonService;
@ApiOperation("移动邮件到自定义文件夹") @ApiOperation("移动邮件到自定义文件夹或回收站")
@PostMapping("move") @PostMapping("move")
public ResultVo edit(@RequestBody EmailFolderMoveVo vo) { public ResultVo edit(@RequestBody EmailFolderMoveVo vo) {
emailPersonService.moveEmailFolder(vo); emailPersonService.moveEmailFolder(vo);
......
package com.zq.email.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private Long id;
private String mun;
}
...@@ -3,6 +3,7 @@ package com.zq.email.feign; ...@@ -3,6 +3,7 @@ package com.zq.email.feign;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.common.vo.SysFileUploadVo; import com.zq.common.vo.SysFileUploadVo;
import com.zq.common.vo.UploadFileListRespVo; import com.zq.common.vo.UploadFileListRespVo;
import com.zq.email.vo.FileViewVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -27,4 +28,8 @@ public interface FileFeignClient { ...@@ -27,4 +28,8 @@ public interface FileFeignClient {
@GetMapping(value = "/downloadFile/{fileId}") @GetMapping(value = "/downloadFile/{fileId}")
ResponseEntity<Resource> download(@PathVariable String fileId); ResponseEntity<Resource> download(@PathVariable String fileId);
@PostMapping(value = "/wps/getViewUrl2")
ResultVo<String> getViewUrlByDownloadPath(@RequestBody FileViewVo vo);
} }
...@@ -3,6 +3,7 @@ package com.zq.email.feign.fallback; ...@@ -3,6 +3,7 @@ package com.zq.email.feign.fallback;
import com.zq.common.vo.*; import com.zq.common.vo.*;
import com.zq.email.feign.AdminFeignClient; import com.zq.email.feign.AdminFeignClient;
import com.zq.email.feign.FileFeignClient; import com.zq.email.feign.FileFeignClient;
import com.zq.email.vo.FileViewVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -43,6 +44,12 @@ public class FileFeignFallbackFactory implements FallbackFactory<FileFeignClient ...@@ -43,6 +44,12 @@ public class FileFeignFallbackFactory implements FallbackFactory<FileFeignClient
LOG.error("下载文件失败(fileId:"+fileId+")"); LOG.error("下载文件失败(fileId:"+fileId+")");
return null; return null;
} }
@Override
public ResultVo<String> getViewUrlByDownloadPath(FileViewVo vo) {
LOG.error("文件getViewUrlByDownloadPath失败");
return null;
}
}; };
} }
} }
package com.zq.email.mapper; package com.zq.email.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.email.dto.Person;
import com.zq.email.entity.EmailPerson; import com.zq.email.entity.EmailPerson;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.email.vo.EmailReqVo; import com.zq.email.vo.EmailReqVo;
import com.zq.email.vo.EmailSearchReqVo; import com.zq.email.vo.EmailSearchReqVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
...@@ -20,4 +23,6 @@ public interface EmailPersonMapper extends BaseMapper<EmailPerson> { ...@@ -20,4 +23,6 @@ public interface EmailPersonMapper extends BaseMapper<EmailPerson> {
Integer selectSearchTotal(@Param("s") EmailSearchReqVo vo); Integer selectSearchTotal(@Param("s") EmailSearchReqVo vo);
Page<EmailPerson> selectSearchPage(Page<EmailPerson> page, @Param("s") EmailSearchReqVo vo); Page<EmailPerson> selectSearchPage(Page<EmailPerson> page, @Param("s") EmailSearchReqVo vo);
List<Person> recentlyContacts(List<Long> recentlySendEmail, Integer personType, Integer isSend, Integer isPerson);
} }
...@@ -30,4 +30,6 @@ public interface IEmailContentService extends IService<EmailContent> { ...@@ -30,4 +30,6 @@ public interface IEmailContentService extends IService<EmailContent> {
List<DeptSimpleDto> findReceiveDeptByContentId(Long contentId); List<DeptSimpleDto> findReceiveDeptByContentId(Long contentId);
List<CustomerUserVo> findReceiverByContentId(Long contentId); List<CustomerUserVo> findReceiverByContentId(Long contentId);
List<Long> findRecentlySendEmail(Integer num);
} }
package com.zq.email.service; package com.zq.email.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.dto.DeptDto; import com.zq.email.dto.DeptDto;
import com.zq.email.dto.DeptSimpleDto; import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson; import com.zq.email.entity.EmailPerson;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zq.email.vo.*; import com.zq.email.vo.*;
...@@ -62,4 +64,6 @@ public interface IEmailPersonService extends IService<EmailPerson> { ...@@ -62,4 +64,6 @@ public interface IEmailPersonService extends IService<EmailPerson> {
//当前部门的人员 //当前部门的人员
ResultVo getUserPolice(); ResultVo getUserPolice();
List<CustomerUserVo> recentlyContacts(List<Long> recentlySendEmail);
} }
...@@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil; ...@@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.CustomerUserVo; import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto; import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
...@@ -135,4 +136,25 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -135,4 +136,25 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
return userVoList; return userVoList;
} }
@Override
public List<Long> findRecentlySendEmail(Integer num) {
OnlineUserDto adminContext = TokenUtils.getAdminContext();
AssertUtils.notNull(adminContext, "登录已失效,请重新登录后再次尝试!");
Page<EmailContent> page = new Page<>(1, num);
page.setSearchCount(false).setOptimizeCountSql(false);
page = this.lambdaQuery()
.select(EmailContent::getId)
.eq(EmailContent::getSendUserId, adminContext.getUserId())
.orderByDesc(EmailContent::getSendTime).page(page);
List<Long> list = new ArrayList<>();
if (page!=null && CollectionUtil.isNotEmpty(page.getRecords())){
for (EmailContent record : page.getRecords()) {
list.add(record.getId());
}
}
return list;
}
} }
...@@ -18,6 +18,7 @@ import com.zq.common.vo.ResultVo; ...@@ -18,6 +18,7 @@ import com.zq.common.vo.ResultVo;
import com.zq.email.constants.EmailConstant; import com.zq.email.constants.EmailConstant;
import com.zq.email.dto.DeptDto; import com.zq.email.dto.DeptDto;
import com.zq.email.dto.DeptSimpleDto; import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.dto.Person;
import com.zq.email.dto.SystemInfo; import com.zq.email.dto.SystemInfo;
import com.zq.email.entity.EmailAttach; import com.zq.email.entity.EmailAttach;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
...@@ -100,6 +101,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -100,6 +101,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId()) .eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId())
.eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType()) .eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType())
.eq(vo.getIsPerson()!=null, EmailPerson::getIsPerson, vo.getIsPerson()) .eq(vo.getIsPerson()!=null, EmailPerson::getIsPerson, vo.getIsPerson())
.eq(vo.getIsRead()!=null, EmailPerson::getIsRead, vo.getIsRead())
.eq(vo.getIsSend()!=null, EmailPerson::getIsSend, vo.getIsSend()).count(); .eq(vo.getIsSend()!=null, EmailPerson::getIsSend, vo.getIsSend()).count();
return count!=null?count:0; return count!=null?count:0;
} }
...@@ -116,13 +118,15 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -116,13 +118,15 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId()) .eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId())
.eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType()) .eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType())
.eq(vo.getIsPerson()!=null, EmailPerson::getIsPerson, vo.getIsPerson()) .eq(vo.getIsPerson()!=null, EmailPerson::getIsPerson, vo.getIsPerson())
.eq(vo.getIsRead()!=null, EmailPerson::getIsRead, vo.getIsRead())
.eq(vo.getIsSend()!=null, EmailPerson::getIsSend, vo.getIsSend()); .eq(vo.getIsSend()!=null, EmailPerson::getIsSend, vo.getIsSend());
if (DateUtils.getRangeStart(vo.getSearchRange()) !=null){ if (DateUtils.getRangeStart(vo.getSearchRange()) !=null){
queryWrapper.ge(EmailPerson::getSendTime, DateUtils.getRangeStart(vo.getSearchRange())); queryWrapper.ge(EmailPerson::getSendTime, DateUtils.getRangeStart(vo.getSearchRange()));
queryWrapper.le(EmailPerson::getSendTime, LocalDateTime.now()); queryWrapper.le(EmailPerson::getSendTime, LocalDateTime.now());
} }
queryWrapper.orderByDesc(EmailPerson::getId).orderByAsc(EmailPerson::getIsRead); queryWrapper.orderByDesc(EmailPerson::getSendTime).orderByAsc(EmailPerson::getIsRead);
page = this.page(page, queryWrapper); page = this.page(page, queryWrapper);
if (page!=null && CollectionUtil.isNotEmpty(page.getRecords())){ if (page!=null && CollectionUtil.isNotEmpty(page.getRecords())){
for (EmailPerson record : page.getRecords()) { for (EmailPerson record : page.getRecords()) {
...@@ -175,9 +179,13 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -175,9 +179,13 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
this.saveEmailReceiver(receiverList, content, vo); this.saveEmailReceiver(receiverList, content, vo);
//短信 //短信
if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) { if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) {
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId()); new Thread(() -> {
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
});
} }
} }
...@@ -186,7 +194,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -186,7 +194,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
this.saveEmailReceiveDept(deptUserList, content, vo); this.saveEmailReceiveDept(deptUserList, content, vo);
//短信 //短信
if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) { if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) {
new Thread(() -> {
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId()); smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
});
} }
} }
} }
...@@ -537,6 +547,24 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -537,6 +547,24 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
return this.adminFeignClient.getUserByDeptId(adminContext.getDeptId()); return this.adminFeignClient.getUserByDeptId(adminContext.getDeptId());
} }
@Override
public List<CustomerUserVo> recentlyContacts(List<Long> recentlySendEmail) {
List<CustomerUserVo> list = new ArrayList<>();
if (CollectionUtil.isNotEmpty(recentlySendEmail)){
List<Person> personList = this.baseMapper.recentlyContacts(recentlySendEmail, EmailConstant.TYPE_EMAIL_RECEIVE, WhetherEnum.YES.getKey(), WhetherEnum.YES.getKey());
if (CollectionUtil.isNotEmpty(personList)){
for (Person person : personList) {
CustomerUserVo userById = this.adminFeignClient.getUserById(person.getId());
if (userById!=null){
list.add(userById);
}
}
}
}
return list;
}
private void saveEmailSender(OnlineUserDto adminContext, EmailContent content, EmailEditVo vo) { private void saveEmailSender(OnlineUserDto adminContext, EmailContent content, EmailEditVo vo) {
EmailPerson sender = EmailPerson.builder() EmailPerson sender = EmailPerson.builder()
.emailContentId(content.getId()) .emailContentId(content.getId())
...@@ -584,9 +612,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -584,9 +612,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒 //内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){ if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
// new Thread(new Runnable() { new Thread(() -> {
// @Override
// public void run() {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG); params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒"); params .put("title","您有一封新邮件提醒");
...@@ -597,8 +623,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -597,8 +623,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params)); log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params));
messageFeignClient .sendWebMessage(params); messageFeignClient .sendWebMessage(params);
messageFeignClient .addToDo(params); messageFeignClient .addToDo(params);
// } });
// });
} }
...@@ -633,9 +658,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -633,9 +658,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒 //内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){ if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
// new Thread(new Runnable() { new Thread(() -> {
// @Override
// public void run() {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG); params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒"); params .put("title","您有一封新邮件提醒");
...@@ -648,8 +671,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -648,8 +671,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo)); log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo));
ResultVo resultVo1 = messageFeignClient.addToDo(params); ResultVo resultVo1 = messageFeignClient.addToDo(params);
log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1)); log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1));
// } });
// });
} }
......
...@@ -47,9 +47,14 @@ public class DateUtils { ...@@ -47,9 +47,14 @@ public class DateUtils {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss")); // System.out.println(DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
LocalDateTime rangeStart = getRangeStart(0); // LocalDateTime rangeStart = getRangeStart(0);
System.out.println(DateUtil.format(rangeStart, "yyyy-MM-dd HH:mm:ss")); // System.out.println(DateUtil.format(rangeStart, "yyyy-MM-dd HH:mm:ss"));
String suffix = "eeeeeee.doc".substring("eeeeeee.doc".lastIndexOf(".") + 1);
System.out.println(suffix);
} }
} }
...@@ -45,14 +45,15 @@ public class SmsUtil { ...@@ -45,14 +45,15 @@ public class SmsUtil {
} }
} }
if (sb.length() >0) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("phones", Base64.encode(sb.toString().getBytes())); map.put("phones", Base64.encode(sb.toString().getBytes()));
map.put("fromId", Base64.encode("oa_email".getBytes())); map.put("fromId", Base64.encode("oa_email".getBytes()));
map.put("content", Base64.encode(content.getBytes())); map.put("content", Base64.encode(content.getBytes()));
map.put("isReply", Base64.encode("0".getBytes())); map.put("isReply", Base64.encode("0".getBytes()));
String param= JSONUtil.toJsonStr(map); String param = JSONUtil.toJsonStr(map);
sendRequest(Base64.encode(param.getBytes()), contentId); sendRequest(Base64.encode(param.getBytes()), contentId);
}
} }
private void sendRequest(String content, Long contentId) { private void sendRequest(String content, Long contentId) {
......
...@@ -71,5 +71,7 @@ public class EmailReqVo extends PageReqVo { ...@@ -71,5 +71,7 @@ public class EmailReqVo extends PageReqVo {
private Integer isSend; private Integer isSend;
@ApiModelProperty("查询范围,默认最近三个月") @ApiModelProperty("查询范围,默认最近三个月")
private Integer searchRange = 0; private Integer searchRange = 0;
@ApiModelProperty("0未读 1已读")
private Integer isRead;
} }
package com.zq.email.vo;
import lombok.Data;
@Data
public class FileViewVo {
private String fileId;
private String downloadPath;
private String fileType;
private String fileName;
private String userId;
}
...@@ -62,4 +62,4 @@ swagger: ...@@ -62,4 +62,4 @@ swagger:
sms: sms:
app-id: oa-mobile app-id: oa-mobile
app-key: GY@mobile$2022 app-key: GY@mobile$2022
url: http://172.28.1.71:9888/ums/inside_new/sendBatch url: http://147.2.3.18:9888/ums/inside_new/sendBatch
\ No newline at end of file \ No newline at end of file
...@@ -61,4 +61,4 @@ swagger: ...@@ -61,4 +61,4 @@ swagger:
sms: sms:
app-id: oa-mobile app-id: oa-mobile
app-key: GY@mobile$2022 app-key: GY@mobile$2022
url: http://172.28.1.71:9888/ums/inside_new/sendBatch url: http://147.2.3.18:9888/ums/inside_new/sendBatch
\ No newline at end of file \ No newline at end of file
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
<contextName>logback</contextName> <contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<property name="log.path" value="/data/services/email_mail/logs/"/> <property name="log.path" value="/data/services/email/logs/"/>
<!-- <property name="log.path" value="D:/seallog/"/>--> <!-- <property name="log.path" value="D:/seallog/"/>-->
<!--主要日志文件名--> <!--主要日志文件名-->
<property name="default_log_file" value="email_new"/> <property name="default_log_file" value="email"/>
<!-- 彩色日志 --> <!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 --> <!-- 彩色日志依赖的渲染类 -->
...@@ -169,10 +169,10 @@ ...@@ -169,10 +169,10 @@
<logger name="org.springframework.boot.autoconfigure" level="error"/> <logger name="org.springframework.boot.autoconfigure" level="error"/>
<springProfile name="local"> <springProfile name="local">
<logger name="com.zq" level="info"/> <logger name="com.zq" level="debug"/>
</springProfile> </springProfile>
<springProfile name="dev"> <springProfile name="dev">
<logger name="com.zq" level="info"/> <logger name="com.zq" level="debug"/>
</springProfile> </springProfile>
<springProfile name="test"> <springProfile name="test">
......
...@@ -3,23 +3,16 @@ ...@@ -3,23 +3,16 @@
<mapper namespace="com.zq.email.mapper.EmailPersonMapper"> <mapper namespace="com.zq.email.mapper.EmailPersonMapper">
<select id="selectSearchTotal" resultType="integer" parameterType="com.zq.email.vo.EmailSearchReqVo"> <select id="selectSearchTotal" resultType="integer" parameterType="com.zq.email.vo.EmailSearchReqVo">
SELECT SELECT
COUNT(1) COUNT(1)
FROM FROM
"EMAIL_PERSON" EP "EMAIL_PERSON" EP
LEFT JOIN
"EMAIL_CONTENT" EC
ON EP."EMAIL_CONTENT_ID" = EC."ID"
LEFT JOIN
"EMAIL_ATTACH" EA
ON EC."ID" = EA."EMAIL_CONTENT_ID"
<where> <where>
<if test="s.folderId != null"> <if test="s.folderId != null">
AND EP."FOLDER_ID" = #{s.folderId} AND EP."FOLDER_ID" = #{s.folderId}
</if> </if>
<if test="s.isPerson != null">
<if test="s.personType != null"> AND EP."IS_PERSON" = #{s.isPerson}
AND EP."IS_PERSON" = #{s.personType}
</if> </if>
<if test="s.isSend != null"> <if test="s.isSend != null">
...@@ -39,45 +32,55 @@ ...@@ -39,45 +32,55 @@
</if> </if>
<if test="s.startTime != null and s.endTime!=null "> <if test="s.startTime != null and s.endTime!=null ">
AND EP."SEND_TIME" BETWEEN #{s.startTime} AND ${s.endTime} AND EP."SEND_TIME" &gt;= #{s.startTime}
</if> AND EP."SEND_TIME" &lt;= #{s.endTime}
<if test="s.sendUserId != null">
AND EC."SEND_USER_ID" =?
</if>
<if test="s.title != null and s.title !='' ">
AND EC."TITLE" LIKE concat('%', #{s.title}, '%')
</if>
<if test="s.content != null and s.content !='' ">
AND EC."CONTENT" LIKE concat('%', #{s.content}, '%')
</if> </if>
<if test="s.attachName != null and s.attachName !='' "> <if test="s.sendUserId != null or (s.title!=null and s.title!='') or (s.content!=null and s.content!='')">
AND EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%') AND EP."EMAIL_CONTENT_ID" IN(
SELECT
EC."ID"
FROM
"EMAIL_CONTENT" EC
<where>
<if test="s.sendUserId != null">
AND EC."SEND_USER_ID" = #{s.sendUserId}
</if>
<if test="s.title != null and s.title !='' ">
AND EC."TITLE" LIKE concat('%', #{s.title}, '%')
</if>
<if test="s.content != null and s.content !='' ">
AND EC."CONTENT" LIKE concat('%', #{s.content}, '%')
</if>
</where>
)
</if>
<if test="s.attachName!=null and s.attachName!=''">
AND EP."EMAIL_CONTENT_ID" IN(
SELECT
EA."EMAIL_CONTENT_ID"
FROM
"EMAIL_CONTENT" EA
WHERE
EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%')
)
</if> </if>
</where> </where>
ORDER BY EP."ID" DESC
</select> </select>
<select id="selectSearchPage" resultType="com.zq.email.entity.EmailPerson" parameterType="com.zq.email.vo.EmailSearchReqVo"> <select id="selectSearchPage" resultType="com.zq.email.entity.EmailPerson" parameterType="com.zq.email.vo.EmailSearchReqVo">
SELECT SELECT
EP.* EP.*
FROM FROM
"EMAIL_PERSON" EP "EMAIL_PERSON" EP
LEFT JOIN
"EMAIL_CONTENT" EC
ON EP."EMAIL_CONTENT_ID" = EC."ID"
LEFT JOIN
"EMAIL_ATTACH" EA
ON EC."ID" = EA."EMAIL_CONTENT_ID"
<where> <where>
<if test="s.folderId != null"> <if test="s.folderId != null">
AND EP."FOLDER_ID" = #{s.folderId} AND EP."FOLDER_ID" = #{s.folderId}
</if> </if>
<if test="s.isPerson != null"> <if test="s.isPerson != null">
AND EP."IS_PERSON" = #{s.isPerson} AND EP."IS_PERSON" = #{s.isPerson}
</if> </if>
...@@ -103,22 +106,131 @@ ...@@ -103,22 +106,131 @@
AND EP."SEND_TIME" &lt;= #{s.endTime} AND EP."SEND_TIME" &lt;= #{s.endTime}
</if> </if>
<if test="s.sendUserId != null"> <if test="s.sendUserId != null or (s.title!=null and s.title!='') or (s.content!=null and s.content!='')">
AND EC."SEND_USER_ID" = #{s.sendUserId} AND EP."EMAIL_CONTENT_ID" IN(
</if> SELECT
EC."ID"
<if test="s.title != null and s.title !='' "> FROM
AND EC."TITLE" LIKE concat('%', #{s.title}, '%') "EMAIL_CONTENT" EC
<where>
<if test="s.sendUserId != null">
AND EC."SEND_USER_ID" = #{s.sendUserId}
</if>
<if test="s.title != null and s.title !='' ">
AND EC."TITLE" LIKE concat('%', #{s.title}, '%')
</if>
<if test="s.content != null and s.content !='' ">
AND EC."CONTENT" LIKE concat('%', #{s.content}, '%')
</if>
</where>
)
</if>
<if test="s.attachName!=null and s.attachName!=''">
AND EP."EMAIL_CONTENT_ID" IN(
SELECT
EA."EMAIL_CONTENT_ID"
FROM
"EMAIL_CONTENT" EA
WHERE
EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%')
)
</if> </if>
</where>
ORDER BY EP."SEND_TIME" DESC
</select>
<if test="s.content != null and s.content !='' ">
AND EC."CONTENT" LIKE concat('%', #{s.content}, '%')
</if>
<if test="s.attachName != null and s.attachName !='' "> <select id="recentlyContacts" resultType="com.zq.email.dto.Person">
AND EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%') SELECT
</if> EP.USER_ID ID,
</where> COUNT(*) NUM
ORDER BY EP."ID" DESC FROM
"PUBLIC"."EMAIL_PERSON" EP
<where>
<if test="recentlySendEmail!=null and recentlySendEmail != '' ">
AND EP."EMAIL_CONTENT_ID" IN
<foreach item="contentId" collection="recentlySendEmail" open="(" separator="," close=")">
#{contentId}
</foreach>
</if>
<if test="personType != null">
AND EP."PERSON_TYPE" = #{personType}
</if>
<if test="isPerson != null">
AND EP."IS_PERSON" = #{isPerson}
</if>
<if test="isSend != null">
AND EP."IS_SEND" = #{isSend}
</if>
</where>
GROUP BY EP."USER_ID"
ORDER BY NUM DESC
LIMIT 10
</select> </select>
</mapper> </mapper>
<!-- SELECT-->
<!-- EP.*-->
<!-- FROM-->
<!-- "EMAIL_PERSON" EP-->
<!-- LEFT JOIN-->
<!-- "EMAIL_CONTENT" EC-->
<!-- ON EP."EMAIL_CONTENT_ID" = EC."ID"-->
<!-- LEFT JOIN-->
<!-- "EMAIL_ATTACH" EA-->
<!-- ON EC."ID" = EA."EMAIL_CONTENT_ID"-->
<!--<where>-->
<!--<if test="s.folderId != null">-->
<!-- AND EP."FOLDER_ID" = #{s.folderId}-->
<!--</if>-->
<!--<if test="s.isPerson != null">-->
<!-- AND EP."IS_PERSON" = #{s.isPerson}-->
<!--</if>-->
<!--<if test="s.isSend != null">-->
<!-- AND EP."IS_SEND" = #{s.isSend}-->
<!--</if>-->
<!--<if test="s.personType != null">-->
<!-- AND EP."PERSON_TYPE" = #{s.personType}-->
<!--</if>-->
<!--<if test="s.userId != null">-->
<!-- AND EP."USER_ID" = #{s.userId}-->
<!--</if>-->
<!--<if test="s.isRead != null">-->
<!-- AND EP."IS_READ" = #{s.isRead}-->
<!--</if>-->
<!--<if test="s.startTime != null and s.endTime!=null ">-->
<!-- AND EP."SEND_TIME" &gt;= #{s.startTime}-->
<!-- AND EP."SEND_TIME" &lt;= #{s.endTime}-->
<!--</if>-->
<!--<if test="s.sendUserId != null">-->
<!-- AND EC."SEND_USER_ID" = #{s.sendUserId}-->
<!--</if>-->
<!--<if test="s.title != null and s.title !='' ">-->
<!-- AND EC."TITLE" LIKE concat('%', #{s.title}, '%')-->
<!--</if>-->
<!--<if test="s.content != null and s.content !='' ">-->
<!-- AND EC."CONTENT" LIKE concat('%', #{s.content}, '%')-->
<!--</if>-->
<!--<if test="s.attachName != null and s.attachName !='' ">-->
<!-- AND EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%')-->
<!--</if>-->
<!--</where>-->
<!-- ORDER BY EP."ID" DESC-->
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment