Commit bbc35999 by chentianzhong

提一个版本

parent 827fd30d
......@@ -10,10 +10,10 @@
</parent>
<groupId>com.zq</groupId>
<artifactId>email-server</artifactId>
<artifactId>oa-email-server</artifactId>
<version>1.0.0</version>
<name>email-server</name>
<name>oa-email-server</name>
<description>内部邮件后端服务</description>
<properties>
......@@ -153,6 +153,7 @@
<version>1.4.7</version>
</dependency>
</dependencies>
<dependencyManagement>
......@@ -254,7 +255,7 @@
<properties>
<profiles.active>test</profiles.active>
<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>
</profile>
<profile>
......
......@@ -78,7 +78,6 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
Map<String, Set<String>> anonymousUrls = getAnonymousUrl(handlerMethodMap);
Set<String> allType = anonymousUrls.get(RequestMethodEnum.ALL.getType());
//不使用注解的时候在这添加url放行
allType.add("/data/file/sealPlatform/**");//放行静态资源
httpSecurity
// 禁用 CSRF
.csrf().disable()
......
......@@ -2,21 +2,30 @@ package com.zq.email.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.annotation.rest.AnonymousGetMapping;
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.email.entity.EmailAttach;
import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson;
import com.zq.email.feign.FileFeignClient;
import com.zq.email.service.IEmailAttachService;
import com.zq.email.vo.EmailDetailVo;
import com.zq.email.vo.FileViewVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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 javax.servlet.http.HttpServletRequest;
......@@ -24,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
/**
* <p>
......@@ -41,23 +51,24 @@ import java.nio.charset.StandardCharsets;
public class EmailAttachController {
private final IEmailAttachService emailAttachService;
@Value("${spring.cloud.config.profile")
private final FileFeignClient fileFeignClient;
@Value("${spring.cloud.config.profile}")
private String profile;
@ApiOperation("获取附件")
@PostMapping
public ResultVo detail(@RequestBody EmailDetailVo vo) {
public ResultVo emailAttach(@RequestBody EmailDetailVo vo) {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailAttachService.findByContentId(vo.getContentId()));
}
@ApiOperation("下载附件")
@AnonymousAccess
@GetMapping("/download/{id}")
@AnonymousGetMapping("/download/{id}")
public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) {
EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
log.info("文件下载地址1111:{}", download);
if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
......@@ -68,7 +79,12 @@ public class EmailAttachController {
}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("文件下载地址2222:{}", download);
AssertUtils.hasText(download, "下载地址为空");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
......@@ -88,8 +104,85 @@ public class EmailAttachController {
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;
import cn.hutool.core.collection.CollectionUtil;
import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailContent;
......@@ -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 {
private final IEmailPersonService emailPersonService;
@ApiOperation("移动邮件到自定义文件夹")
@ApiOperation("移动邮件到自定义文件夹或回收站")
@PostMapping("move")
public ResultVo edit(@RequestBody EmailFolderMoveVo 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;
import com.zq.common.vo.ResultVo;
import com.zq.common.vo.SysFileUploadVo;
import com.zq.common.vo.UploadFileListRespVo;
import com.zq.email.vo.FileViewVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
......@@ -27,4 +28,8 @@ public interface FileFeignClient {
@GetMapping(value = "/downloadFile/{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;
import com.zq.common.vo.*;
import com.zq.email.feign.AdminFeignClient;
import com.zq.email.feign.FileFeignClient;
import com.zq.email.vo.FileViewVo;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -43,6 +44,12 @@ public class FileFeignFallbackFactory implements FallbackFactory<FileFeignClient
LOG.error("下载文件失败(fileId:"+fileId+")");
return null;
}
@Override
public ResultVo<String> getViewUrlByDownloadPath(FileViewVo vo) {
LOG.error("文件getViewUrlByDownloadPath失败");
return null;
}
};
}
}
package com.zq.email.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.email.dto.Person;
import com.zq.email.entity.EmailPerson;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.email.vo.EmailReqVo;
import com.zq.email.vo.EmailSearchReqVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
......@@ -20,4 +23,6 @@ public interface EmailPersonMapper extends BaseMapper<EmailPerson> {
Integer selectSearchTotal(@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> {
List<DeptSimpleDto> findReceiveDeptByContentId(Long contentId);
List<CustomerUserVo> findReceiverByContentId(Long contentId);
List<Long> findRecentlySendEmail(Integer num);
}
package com.zq.email.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.ResultVo;
import com.zq.email.dto.DeptDto;
import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zq.email.vo.*;
......@@ -62,4 +64,6 @@ public interface IEmailPersonService extends IService<EmailPerson> {
//当前部门的人员
ResultVo getUserPolice();
List<CustomerUserVo> recentlyContacts(List<Long> recentlySendEmail);
}
......@@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo;
......@@ -135,4 +136,25 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
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;
import com.zq.email.constants.EmailConstant;
import com.zq.email.dto.DeptDto;
import com.zq.email.dto.DeptSimpleDto;
import com.zq.email.dto.Person;
import com.zq.email.dto.SystemInfo;
import com.zq.email.entity.EmailAttach;
import com.zq.email.entity.EmailContent;
......@@ -100,6 +101,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId())
.eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType())
.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();
return count!=null?count:0;
}
......@@ -116,13 +118,15 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.eq(vo.getFolderId()!=null, EmailPerson::getFolderId, vo.getFolderId())
.eq(vo.getPersonType()!=null, EmailPerson::getPersonType, vo.getPersonType())
.eq(vo.getIsPerson()!=null, EmailPerson::getIsPerson, vo.getIsPerson())
.eq(vo.getIsRead()!=null, EmailPerson::getIsRead, vo.getIsRead())
.eq(vo.getIsSend()!=null, EmailPerson::getIsSend, vo.getIsSend());
if (DateUtils.getRangeStart(vo.getSearchRange()) !=null){
queryWrapper.ge(EmailPerson::getSendTime, DateUtils.getRangeStart(vo.getSearchRange()));
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);
if (page!=null && CollectionUtil.isNotEmpty(page.getRecords())){
for (EmailPerson record : page.getRecords()) {
......@@ -175,9 +179,13 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
this.saveEmailReceiver(receiverList, content, vo);
//短信
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
this.saveEmailReceiveDept(deptUserList, content, vo);
//短信
if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) {
new Thread(() -> {
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
});
}
}
}
......@@ -537,6 +547,24 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
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) {
EmailPerson sender = EmailPerson.builder()
.emailContentId(content.getId())
......@@ -584,9 +612,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
// new Thread(new Runnable() {
// @Override
// public void run() {
new Thread(() -> {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒");
......@@ -597,8 +623,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params));
messageFeignClient .sendWebMessage(params);
messageFeignClient .addToDo(params);
// }
// });
});
}
......@@ -633,9 +658,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
// new Thread(new Runnable() {
// @Override
// public void run() {
new Thread(() -> {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒");
......@@ -648,8 +671,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo));
ResultVo resultVo1 = messageFeignClient.addToDo(params);
log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1));
// }
// });
});
}
......
......@@ -47,9 +47,14 @@ public class DateUtils {
}
public static void main(String[] args) {
System.out.println(DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
LocalDateTime rangeStart = getRangeStart(0);
System.out.println(DateUtil.format(rangeStart, "yyyy-MM-dd HH:mm:ss"));
// System.out.println(DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
// LocalDateTime rangeStart = getRangeStart(0);
// 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 {
}
}
Map<String, Object> map = new HashMap<>();
map.put("phones", Base64.encode(sb.toString().getBytes()));
map.put("fromId", Base64.encode("oa_email".getBytes()));
map.put("content", Base64.encode(content.getBytes()));
map.put("isReply", Base64.encode("0".getBytes()));
String param= JSONUtil.toJsonStr(map);
sendRequest(Base64.encode(param.getBytes()), contentId);
if (sb.length() >0) {
Map<String, Object> map = new HashMap<>();
map.put("phones", Base64.encode(sb.toString().getBytes()));
map.put("fromId", Base64.encode("oa_email".getBytes()));
map.put("content", Base64.encode(content.getBytes()));
map.put("isReply", Base64.encode("0".getBytes()));
String param = JSONUtil.toJsonStr(map);
sendRequest(Base64.encode(param.getBytes()), contentId);
}
}
private void sendRequest(String content, Long contentId) {
......
......@@ -71,5 +71,7 @@ public class EmailReqVo extends PageReqVo {
private Integer isSend;
@ApiModelProperty("查询范围,默认最近三个月")
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:
sms:
app-id: oa-mobile
app-key: GY@mobile$2022
url: http://172.28.1.71:9888/ums/inside_new/sendBatch
\ No newline at end of file
url: http://147.2.3.18:9888/ums/inside_new/sendBatch
\ No newline at end of file
......@@ -61,4 +61,4 @@ swagger:
sms:
app-id: oa-mobile
app-key: GY@mobile$2022
url: http://172.28.1.71:9888/ums/inside_new/sendBatch
\ No newline at end of file
url: http://147.2.3.18:9888/ums/inside_new/sendBatch
\ No newline at end of file
......@@ -8,11 +8,11 @@
<contextName>logback</contextName>
<!-- 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="default_log_file" value="email_new"/>
<property name="default_log_file" value="email"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
......@@ -169,10 +169,10 @@
<logger name="org.springframework.boot.autoconfigure" level="error"/>
<springProfile name="local">
<logger name="com.zq" level="info"/>
<logger name="com.zq" level="debug"/>
</springProfile>
<springProfile name="dev">
<logger name="com.zq" level="info"/>
<logger name="com.zq" level="debug"/>
</springProfile>
<springProfile name="test">
......
......@@ -3,23 +3,16 @@
<mapper namespace="com.zq.email.mapper.EmailPersonMapper">
<select id="selectSearchTotal" resultType="integer" parameterType="com.zq.email.vo.EmailSearchReqVo">
SELECT
SELECT
COUNT(1)
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"
"EMAIL_PERSON" EP
<where>
<if test="s.folderId != null">
AND EP."FOLDER_ID" = #{s.folderId}
AND EP."FOLDER_ID" = #{s.folderId}
</if>
<if test="s.personType != null">
AND EP."IS_PERSON" = #{s.personType}
<if test="s.isPerson != null">
AND EP."IS_PERSON" = #{s.isPerson}
</if>
<if test="s.isSend != null">
......@@ -39,45 +32,55 @@
</if>
<if test="s.startTime != null and s.endTime!=null ">
AND EP."SEND_TIME" BETWEEN #{s.startTime} AND ${s.endTime}
</if>
<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}, '%')
AND EP."SEND_TIME" &gt;= #{s.startTime}
AND EP."SEND_TIME" &lt;= #{s.endTime}
</if>
<if test="s.attachName != null and s.attachName !='' ">
AND EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%')
<if test="s.sendUserId != null or (s.title!=null and s.title!='') or (s.content!=null and s.content!='')">
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>
</where>
ORDER BY EP."ID" DESC
</select>
<select id="selectSearchPage" resultType="com.zq.email.entity.EmailPerson" parameterType="com.zq.email.vo.EmailSearchReqVo">
SELECT
EP.*
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"
"EMAIL_PERSON" EP
<where>
<if test="s.folderId != null">
AND EP."FOLDER_ID" = #{s.folderId}
AND EP."FOLDER_ID" = #{s.folderId}
</if>
<if test="s.isPerson != null">
AND EP."IS_PERSON" = #{s.isPerson}
</if>
......@@ -103,22 +106,131 @@
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 test="s.sendUserId != null or (s.title!=null and s.title!='') or (s.content!=null and s.content!='')">
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>
</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 !='' ">
AND EA."ATTACH_NAME" LIKE concat('%', #{s.attachName}, '%')
</if>
</where>
ORDER BY EP."ID" DESC
<select id="recentlyContacts" resultType="com.zq.email.dto.Person">
SELECT
EP.USER_ID ID,
COUNT(*) NUM
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>
</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