Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
email
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈天仲
email
Commits
49bf501e
Commit
49bf501e
authored
Mar 17, 2024
by
chentianzhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
流式查询 优化sql
parent
11e11eb1
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
270 additions
and
106 deletions
+270
-106
pom.xml
+1
-1
src/main/java/com/zq/email/controller/EmailApiController.java
+1
-21
src/main/java/com/zq/email/controller/EmailContentController.java
+0
-2
src/main/java/com/zq/email/controller/EmailController.java
+2
-2
src/main/java/com/zq/email/controller/EmailInboxController.java
+56
-0
src/main/java/com/zq/email/mapper/EmailPersonMapper.java
+2
-1
src/main/java/com/zq/email/service/IEmailInboxService.java
+17
-0
src/main/java/com/zq/email/service/IEmailPersonService.java
+2
-2
src/main/java/com/zq/email/service/impl/EmailInboxServiceImpl.java
+66
-0
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
+2
-6
src/main/java/com/zq/email/vo/EmailReqVo.java
+1
-71
src/main/java/com/zq/email/vo/EmailReqVo1.java
+91
-0
src/main/java/com/zq/email/vo/inbox/EmailInboxReqVo.java
+29
-0
No files found.
pom.xml
View file @
49bf501e
...
...
@@ -82,7 +82,7 @@
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
3.
4.0
</version>
<version>
3.
5.4
</version>
</dependency>
<!--代码生成依赖 -->
...
...
src/main/java/com/zq/email/controller/EmailApiController.java
View file @
49bf501e
...
...
@@ -2,28 +2,17 @@ package com.zq.email.controller;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.zq.common.annotation.rest.AnonymousGetMapping
;
import
com.zq.common.annotation.rest.AnonymousPostMapping
;
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.constants.EmailConstant
;
import
com.zq.email.entity.EmailContent
;
import
com.zq.email.entity.EmailPerson
;
import
com.zq.email.entity.SysLog
;
import
com.zq.email.enums.EmailDegreeEnum
;
import
com.zq.email.enums.EmailFolderEnum
;
import
com.zq.email.enums.SearchRangeEnum
;
import
com.zq.email.enums.WhetherEnum
;
import
com.zq.email.feign.AdminFeignClient
;
import
com.zq.email.service.IBusinessSystemService
;
import
com.zq.email.service.IEmailContentService
;
import
com.zq.email.service.IEmailPersonService
;
import
com.zq.email.service.ISysLogService
;
import
com.zq.email.utils.DateUtils
;
...
...
@@ -34,19 +23,10 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.bytebuddy.asm.Advice
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.mail.internet.MimeMessage
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.Set
;
/**
* <p>
...
...
@@ -112,7 +92,7 @@ public class EmailApiController {
@ApiOperation
(
"获取未读个人邮件"
)
@GetMapping
(
"unReadEmailCount"
)
public
ResultVo
unReadEmailCount
()
{
EmailReqVo
reqVo
=
new
EmailReqVo
();
EmailReqVo
1
reqVo
=
new
EmailReqVo1
();
reqVo
.
setFolderId
(
EmailFolderEnum
.
FOLDER_INBOX
.
getKey
());
reqVo
.
setPersonType
(
EmailConstant
.
TYPE_EMAIL_RECEIVE
);
reqVo
.
setIsPerson
(
WhetherEnum
.
YES
.
getKey
());
...
...
src/main/java/com/zq/email/controller/EmailContentController.java
View file @
49bf501e
...
...
@@ -5,8 +5,6 @@ import com.zq.common.utils.AssertUtils;
import
com.zq.common.vo.ResultVo
;
import
com.zq.email.service.IEmailContentService
;
import
com.zq.email.vo.EmailDegreeVo
;
import
com.zq.email.vo.EmailDetailVo
;
import
com.zq.email.vo.EmailReqVo
;
import
com.zq.email.vo.EmailTaskVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
src/main/java/com/zq/email/controller/EmailController.java
View file @
49bf501e
...
...
@@ -52,7 +52,7 @@ public class EmailController {
@ApiOperation
(
"列表总数(文件夹未读总数也可以使用这个接口,注意参数)"
)
@PostMapping
(
"total"
)
public
ResultVo
total
(
@RequestBody
EmailReqVo
vo
)
{
public
ResultVo
total
(
@RequestBody
EmailReqVo
1
vo
)
{
AssertUtils
.
notNull
(
vo
.
getSearchRange
(),
"缺少参数:searchRange"
);
AssertUtils
.
notNull
(
vo
.
getFolderId
(),
"缺少参数:folderId"
);
...
...
@@ -65,7 +65,7 @@ public class EmailController {
@ApiOperation
(
"列表分页"
)
@PostMapping
(
"page"
)
public
ResultVo
page
(
@RequestBody
EmailReqVo
vo
)
{
public
ResultVo
page
(
@RequestBody
EmailReqVo
1
vo
)
{
OnlineUserDto
adminContext
=
TokenUtils
.
getAdminContext
();
AssertUtils
.
notNull
(
adminContext
,
"登录已失效,请重新登录后再次尝试!"
);
...
...
src/main/java/com/zq/email/controller/EmailInboxController.java
0 → 100644
View file @
49bf501e
package
com
.
zq
.
email
.
controller
;
import
cn.hutool.core.date.DateUtil
;
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.service.IEmailContentService
;
import
com.zq.email.service.IEmailInboxService
;
import
com.zq.email.service.IEmailPersonService
;
import
com.zq.email.utils.DateUtils
;
import
com.zq.email.vo.EmailReqVo1
;
import
com.zq.email.vo.inbox.EmailInboxReqVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
/**
* <p>
*
* @author chentianzhong
* @since 1.0.0
*/
@Api
(
tags
=
"收件箱接口"
)
@RestController
@RequestMapping
(
"/email/inbox"
)
@Slf4j
@RequiredArgsConstructor
public
class
EmailInboxController
{
private
final
IEmailInboxService
emailInboxService
;
@ApiOperation
(
"列表分页"
)
@PostMapping
(
"page"
)
public
ResultVo
page
(
@RequestBody
EmailInboxReqVo
reqVo
)
{
OnlineUserDto
adminContext
=
TokenUtils
.
getAdminContext
();
AssertUtils
.
notNull
(
adminContext
,
"登录已失效,请重新登录后再次尝试!"
);
//默认最近一年(服务器时间)
reqVo
.
setSearchStartTime
(
DateUtil
.
offsetMonth
(
new
Date
(),
-
12
).
toLocalDateTime
());
reqVo
.
setSearchStopTime
(
LocalDateTime
.
now
());
return
ResultVo
.
success
(
emailInboxService
.
inboxPage
(
reqVo
));
}
}
src/main/java/com/zq/email/mapper/EmailPersonMapper.java
View file @
49bf501e
package
com
.
zq
.
email
.
mapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
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
;
...
...
@@ -25,4 +25,5 @@ public interface EmailPersonMapper extends BaseMapper<EmailPerson> {
Page
<
EmailPerson
>
selectSearchPage
(
Page
<
EmailPerson
>
page
,
@Param
(
"s"
)
EmailSearchReqVo
vo
);
List
<
Person
>
recentlyContacts
(
List
<
Long
>
recentlySendEmail
,
Integer
personType
,
Integer
isSend
,
Integer
isPerson
);
}
src/main/java/com/zq/email/service/IEmailInboxService.java
0 → 100644
View file @
49bf501e
package
com
.
zq
.
email
.
service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.zq.email.entity.EmailPerson
;
import
com.zq.email.vo.inbox.EmailInboxReqVo
;
/**
* <p>
* 收件箱查询接口
* @author chentianzhong
* @since 1.0.0
*/
public
interface
IEmailInboxService
{
Page
<
EmailPerson
>
inboxPage
(
EmailInboxReqVo
reqVo
);
}
src/main/java/com/zq/email/service/IEmailPersonService.java
View file @
49bf501e
...
...
@@ -28,10 +28,10 @@ import java.util.List;
public
interface
IEmailPersonService
extends
IService
<
EmailPerson
>
{
//邮件分页总数
Integer
emailCount
(
EmailReqVo
vo
);
Integer
emailCount
(
EmailReqVo
1
vo
);
//邮件分页列表
Page
<
EmailPerson
>
emailPage
(
EmailReqVo
vo
);
Page
<
EmailPerson
>
emailPage
(
EmailReqVo
1
vo
);
//邮件分页总数
Integer
emailManageCount
(
EmailSearchReqVo
vo
);
...
...
src/main/java/com/zq/email/service/impl/EmailInboxServiceImpl.java
0 → 100644
View file @
49bf501e
package
com
.
zq
.
email
.
service
.
impl
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.pagehelper.IPage
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.TokenUtils
;
import
com.zq.common.vo.OnlineUserDto
;
import
com.zq.email.entity.EmailPerson
;
import
com.zq.email.enums.EmailFolderEnum
;
import
com.zq.email.enums.WhetherEnum
;
import
com.zq.email.mapper.EmailPersonMapper
;
import
com.zq.email.service.IEmailInboxService
;
import
com.zq.email.vo.inbox.EmailInboxReqVo
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.sql.Wrapper
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <p>
*
* @author chentianzhong
* @since 1.0.0
*/
@Service
@RequiredArgsConstructor
public
class
EmailInboxServiceImpl
implements
IEmailInboxService
{
private
static
EmailPersonMapper
emailPersonMapper
;
@Override
public
Page
<
EmailPerson
>
inboxPage
(
EmailInboxReqVo
reqVo
)
{
OnlineUserDto
adminContext
=
TokenUtils
.
getAdminContext
();
AssertUtils
.
notNull
(
adminContext
,
"登录已失效,请重新登录后再次尝试!"
);
Page
<
EmailPerson
>
queryPage
=
new
Page
<>(
reqVo
.
getPage
(),
reqVo
.
getSize
());
LambdaQueryWrapper
<
EmailPerson
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
EmailPerson
.
class
)
.
eq
(
EmailPerson:
:
getUserId
,
adminContext
.
getUserId
())
.
eq
(
EmailPerson:
:
getFolderId
,
EmailFolderEnum
.
FOLDER_INBOX
.
getKey
())
.
eq
(
EmailPerson:
:
getPersonType
,
2
)
.
eq
(
EmailPerson:
:
getIsPerson
,
WhetherEnum
.
YES
.
getKey
())
.
eq
(
EmailPerson:
:
getIsSend
,
WhetherEnum
.
YES
.
getKey
())
.
eq
(
reqVo
.
getIsRead
()
!=
null
,
EmailPerson:
:
getIsRead
,
reqVo
.
getIsRead
())
.
ge
(
reqVo
.
getSearchStartTime
()
!=
null
,
EmailPerson:
:
getSendTime
,
reqVo
.
getSearchStartTime
())
.
le
(
reqVo
.
getSearchStopTime
()
!=
null
,
EmailPerson:
:
getSendTime
,
reqVo
.
getSearchStopTime
());
List
<
EmailPerson
>
inboxList
=
new
ArrayList
<>();
emailPersonMapper
.
selectList
(
queryPage
,
queryWrapper
,
resultContext
->{
int
resultCount
=
resultContext
.
getResultCount
();
queryPage
.
setTotal
(
resultCount
);
System
.
out
.
println
(
"当前处理第 "
+
resultCount
+
" 条数据"
);
EmailPerson
emailPerson
=
resultContext
.
getResultObject
();
System
.
out
.
println
(
"数据输出:"
+
JSONUtil
.
toJsonStr
(
emailPerson
));
inboxList
.
add
(
emailPerson
);
});
queryPage
.
setRecords
(
inboxList
);
return
queryPage
;
}
}
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
View file @
49bf501e
package
com
.
zq
.
email
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.zq.common.utils.AssertUtils
;
...
...
@@ -30,7 +27,6 @@ import com.zq.email.service.IEmailAttachService;
import
com.zq.email.service.IEmailContentService
;
import
com.zq.email.service.IEmailPersonService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zq.email.utils.DateUtils
;
import
com.zq.email.utils.EmailUtil
;
import
com.zq.email.utils.MsgUtil
;
import
com.zq.email.utils.SmsUtil
;
...
...
@@ -74,7 +70,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
@Override
public
Integer
emailCount
(
EmailReqVo
vo
)
{
public
Integer
emailCount
(
EmailReqVo
1
vo
)
{
OnlineUserDto
adminContext
=
TokenUtils
.
getAdminContext
();
AssertUtils
.
notNull
(
adminContext
,
"登录已失效,请重新登录后再次尝试!"
);
LambdaQueryWrapper
<
EmailPerson
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
...
...
@@ -91,7 +87,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
}
@Override
public
Page
<
EmailPerson
>
emailPage
(
EmailReqVo
vo
)
{
public
Page
<
EmailPerson
>
emailPage
(
EmailReqVo
1
vo
)
{
OnlineUserDto
adminContext
=
TokenUtils
.
getAdminContext
();
AssertUtils
.
notNull
(
adminContext
,
"登录已失效,请重新登录后再次尝试!"
);
...
...
src/main/java/com/zq/email/vo/EmailReqVo.java
View file @
49bf501e
...
...
@@ -2,88 +2,18 @@ package com.zq.email.vo;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.sun.org.apache.xpath.internal.operations.Bool
;
import
com.zq.common.vo.PageReqVo
;
import
com.zq.email.constants.EmailConstant
;
import
com.zq.email.enums.EmailFolderEnum
;
import
com.zq.email.enums.SearchRangeEnum
;
import
com.zq.email.enums.WhetherEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.List
;
@ApiModel
(
description
=
"邮件
列表
参数"
)
@ApiModel
(
description
=
"邮件
查询
参数"
)
@Data
public
class
EmailReqVo
extends
PageReqVo
{
/**
*
* 收件箱
* folderId = 1
* personType = 2
* isPerson =1
* isSend = 1
* searchRange = 0
* 部门邮件
* folderId = 2
* personType = 2
* isPerson =0
* isSend = 1
* searchRange = 0
* 草稿箱
* folderId = 3
* personType = 1
* isPerson =1
* isSend = 0
* searchRange = 0
* 已发送
* folderId = 4
* personType = 1
* isPerson =1
* isSend = 1
* searchRange = 0
* 回收站
* folderId = 5
* personType = 2
* isSend = 1
* searchRange = 0
* 其他文件夹
* folderId = 前端根据点击传入
* searchRange = 0
* isSend = 1
*/
@ApiModelProperty
(
value
=
"文件夹ID"
)
private
Integer
folderId
;
@ApiModelProperty
(
"人员类型"
)
private
Integer
personType
;
@ApiModelProperty
(
"是否个人邮件"
)
private
Integer
isPerson
;
@ApiModelProperty
(
"是否已发送"
)
private
Integer
isSend
;
@ApiModelProperty
(
"查询范围,默认最近三个月"
)
private
Integer
searchRange
=
0
;
@ApiModelProperty
(
"0未读 1已读"
)
private
Integer
isRead
;
@ApiModelProperty
(
"是否获取人员头像"
)
private
Boolean
isSenderPhoto
=
false
;
@ApiModelProperty
(
"发送人Id,邮件管理查询用。"
)
private
Long
sendUserId
;
@ApiModelProperty
(
"查询开始时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
...
...
src/main/java/com/zq/email/vo/EmailReqVo1.java
0 → 100644
View file @
49bf501e
package
com
.
zq
.
email
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zq.common.vo.PageReqVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
@ApiModel
(
description
=
"邮件列表参数"
)
@Data
public
class
EmailReqVo1
extends
PageReqVo
{
/**
*
* 收件箱
* folderId = 1
* personType = 2
* isPerson =1
* isSend = 1
* searchRange = 0
* 部门邮件
* folderId = 2
* personType = 2
* isPerson =0
* isSend = 1
* searchRange = 0
* 草稿箱
* folderId = 3
* personType = 1
* isPerson =1
* isSend = 0
* searchRange = 0
* 已发送
* folderId = 4
* personType = 1
* isPerson =1
* isSend = 1
* searchRange = 0
* 回收站
* folderId = 5
* personType = 2
* isSend = 1
* searchRange = 0
* 其他文件夹
* folderId = 前端根据点击传入
* searchRange = 0
* isSend = 1
*/
@ApiModelProperty
(
value
=
"文件夹ID"
)
private
Integer
folderId
;
@ApiModelProperty
(
"人员类型"
)
private
Integer
personType
;
@ApiModelProperty
(
"是否个人邮件"
)
private
Integer
isPerson
;
@ApiModelProperty
(
"是否已发送"
)
private
Integer
isSend
;
@ApiModelProperty
(
"查询范围,默认最近三个月"
)
private
Integer
searchRange
=
0
;
@ApiModelProperty
(
"0未读 1已读"
)
private
Integer
isRead
;
@ApiModelProperty
(
"是否获取人员头像"
)
private
Boolean
isSenderPhoto
=
false
;
@ApiModelProperty
(
"发送人Id,邮件管理查询用。"
)
private
Long
sendUserId
;
@ApiModelProperty
(
"查询开始时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
searchStartTime
;
@ApiModelProperty
(
"查询结束时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
searchStopTime
;
}
src/main/java/com/zq/email/vo/inbox/EmailInboxReqVo.java
0 → 100644
View file @
49bf501e
package
com
.
zq
.
email
.
vo
.
inbox
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.zq.email.vo.EmailReqVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.time.LocalDateTime
;
/**
* <p>
*
* @author chentianzhong
* @since 1.0.0
*/
@ApiModel
(
description
=
"收件箱查询参数"
)
@Data
public
class
EmailInboxReqVo
extends
EmailReqVo
{
@ApiModelProperty
(
"是否获取人员头像"
)
private
Boolean
isSenderPhoto
=
true
;
@ApiModelProperty
(
"是否已读"
)
private
Integer
isRead
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment