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
107746a6
Commit
107746a6
authored
Sep 20, 2023
by
chentianzhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
已读关闭代办,外网数据回内网显示问题
parent
aeb05cca
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
206 additions
and
224 deletions
+206
-224
pom.xml
+1
-1
src/main/java/com/zq/email/config/MyThreadPoolTaskExecutor.java
+49
-49
src/main/java/com/zq/email/controller/EmailController.java
+4
-0
src/main/java/com/zq/email/service/impl/EmailAttachServiceImpl.java
+4
-0
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
+5
-18
src/main/java/com/zq/email/utils/MsgUtil.java
+17
-9
src/main/resources/logback-spring.xml
+125
-145
src/main/resources/mapper/EmailPersonMapper.xml
+1
-2
No files found.
pom.xml
View file @
107746a6
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
<dependency>
<dependency>
<groupId>
com.zq
</groupId>
<groupId>
com.zq
</groupId>
<artifactId>
oa-common-client
</artifactId>
<artifactId>
oa-common-client
</artifactId>
<version>
1.2.
7
</version>
<version>
1.2.
9
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
...
...
src/main/java/com/zq/email/config/MyThreadPoolTaskExecutor.java
View file @
107746a6
package
com
.
zq
.
email
.
config
;
//
package com.zq.email.config;
//
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
//
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import
org.springframework.web.context.request.RequestAttributes
;
//
import org.springframework.web.context.request.RequestAttributes;
import
org.springframework.web.context.request.RequestContextHolder
;
//
import org.springframework.web.context.request.RequestContextHolder;
//
import
java.util.concurrent.Callable
;
//
import java.util.concurrent.Callable;
import
java.util.concurrent.Future
;
//
import java.util.concurrent.Future;
//
/**
/
//
**
* 解决异步丢失请求信息
//
* 解决异步丢失请求信息
*
//
*
* @author wilmiam
//
* @author wilmiam
* @since 2022/12/10 16:23
//
* @since 2022/12/10 16:23
*/
//
*/
public
class
MyThreadPoolTaskExecutor
extends
ThreadPoolTaskExecutor
{
//
public class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
//
public
MyThreadPoolTaskExecutor
()
{
//
public MyThreadPoolTaskExecutor() {
super
();
//
super();
}
//
}
//
@Override
//
@Override
public
void
execute
(
Runnable
task
)
{
//
public void execute(Runnable task) {
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
super
.
execute
(()
->
{
//
super.execute(() -> {
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
//
RequestContextHolder.setRequestAttributes(requestAttributes);
task
.
run
();
//
task.run();
});
//
});
}
//
}
//
@Override
//
@Override
public
<
T
>
Future
<
T
>
submit
(
Callable
<
T
>
task
)
{
//
public <T> Future<T> submit(Callable<T> task) {
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return
super
.
submit
(()
->
{
//
return super.submit(() -> {
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
//
RequestContextHolder.setRequestAttributes(requestAttributes);
return
task
.
call
();
//
return task.call();
});
//
});
}
//
}
//
@Override
//
@Override
public
Future
<?>
submit
(
Runnable
task
)
{
//
public Future<?> submit(Runnable task) {
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
return
super
.
submit
(()
->
{
//
return super.submit(() -> {
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
//
RequestContextHolder.setRequestAttributes(requestAttributes);
task
.
run
();
//
task.run();
});
//
});
}
//
}
//
}
//
}
src/main/java/com/zq/email/controller/EmailController.java
View file @
107746a6
...
@@ -2,6 +2,7 @@ package com.zq.email.controller;
...
@@ -2,6 +2,7 @@ package com.zq.email.controller;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
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.OnlineUserDto
;
import
com.zq.common.vo.OnlineUserDto
;
...
@@ -104,6 +105,9 @@ public class EmailController {
...
@@ -104,6 +105,9 @@ public class EmailController {
AssertUtils
.
notNull
(
content
,
"邮件内容读取失败"
);
AssertUtils
.
notNull
(
content
,
"邮件内容读取失败"
);
EmailPerson
emailPerson
=
emailPersonService
.
getByContentAndFolderId
(
content
.
getId
(),
content
.
getSendTime
(),
vo
.
getFolderId
());
EmailPerson
emailPerson
=
emailPersonService
.
getByContentAndFolderId
(
content
.
getId
(),
content
.
getSendTime
(),
vo
.
getFolderId
());
emailPerson
.
setEmailContent
(
content
);
emailPerson
.
setEmailContent
(
content
);
// if (emailPerson.getIsRead().equals(WhetherEnum.NO.getKey())) {
// msgUtil.doneMsgByBusinessIdAndReceiverId(person.getEmailContentId(), person.getUserId());
// }
return
ResultVo
.
success
(
emailPerson
);
return
ResultVo
.
success
(
emailPerson
);
}
}
...
...
src/main/java/com/zq/email/service/impl/EmailAttachServiceImpl.java
View file @
107746a6
...
@@ -136,6 +136,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
...
@@ -136,6 +136,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
}
else
{
}
else
{
if
(
profile
.
contains
(
"wan"
))
{
if
(
profile
.
contains
(
"wan"
))
{
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
}
else
{
download
=
download
.
replaceAll
(
"172.28.1.71"
,
"147.2.3.3"
);
}
}
}
}
return
download
;
return
download
;
...
@@ -157,6 +159,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
...
@@ -157,6 +159,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
}
else
{
}
else
{
if
(
profile
.
equals
(
"wanpro"
)
||
profile
.
equals
(
"wantest"
))
{
if
(
profile
.
equals
(
"wanpro"
)
||
profile
.
equals
(
"wantest"
))
{
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
}
else
{
download
=
download
.
replaceAll
(
"172.28.1.71"
,
"147.2.3.3"
);
}
}
}
}
return
download
;
return
download
;
...
...
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
View file @
107746a6
...
@@ -426,22 +426,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
...
@@ -426,22 +426,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
List
<
Long
>
ids
=
personList
.
stream
().
map
(
EmailPerson:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
Long
>
ids
=
personList
.
stream
().
map
(
EmailPerson:
:
getId
).
collect
(
Collectors
.
toList
());
for
(
EmailPerson
person
:
personList
)
{
for
(
EmailPerson
person
:
personList
)
{
if
(
vo
.
getIsRead
().
equals
(
WhetherEnum
.
YES
.
getKey
()))
{
msgUtil
.
doneMsgByBusinessIdAndReceiverId
(
person
.
getEmailContentId
(),
person
.
getUserId
());
msgUtil
.
doneMsgByBusinessIdAndReceiverId
(
person
.
getEmailContentId
(),
person
.
getUserId
());
}
// else{
// //获取代办前端路径
// ResultVo<SystemInfo> bySystemTag = this.adminFeignClient.getBySystemTag(EmailConstant.SYSTEM_TAG);
// AssertUtils.isTrue(bySystemTag.isSuccess(), "调用admin服务,获取业务系统异常");
// SystemInfo systemInfo = bySystemTag.getData();
// AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空");
//
// EmailContent content = this.emailContentService.getById(person.getId());
//
// List<Long> receiverList = new ArrayList<>();
// receiverList.add(person.getUserId());
// msgUtil.sendMsg2(adminContext.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
// }
}
}
this
.
lambdaUpdate
().
in
(
EmailPerson:
:
getId
,
ids
)
this
.
lambdaUpdate
().
in
(
EmailPerson:
:
getId
,
ids
)
...
@@ -749,6 +734,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
...
@@ -749,6 +734,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
vo
.
setIsPerson
(
WhetherEnum
.
YES
.
getKey
());
vo
.
setIsPerson
(
WhetherEnum
.
YES
.
getKey
());
vo
.
setIsSend
(
WhetherEnum
.
NO
.
getKey
());
vo
.
setIsSend
(
WhetherEnum
.
NO
.
getKey
());
vo
.
setUserId
(
adminContext
.
getUserId
());
vo
.
setUserId
(
adminContext
.
getUserId
());
vo
.
setSendUserId
(
null
);
break
;
break
;
case
FOLDER_ALREADY_SEND:
//已发送
case
FOLDER_ALREADY_SEND:
//已发送
...
@@ -780,6 +766,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
...
@@ -780,6 +766,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
}
}
}
}
Page
<
EmailPerson
>
page
=
new
Page
<>(
vo
.
getPage
(),
vo
.
getSize
());
Page
<
EmailPerson
>
page
=
new
Page
<>(
vo
.
getPage
(),
vo
.
getSize
());
page
.
setSearchCount
(
false
).
setOptimizeCountSql
(
false
);
page
=
this
.
baseMapper
.
selectSearchPage
(
page
,
vo
);
page
=
this
.
baseMapper
.
selectSearchPage
(
page
,
vo
);
if
(
page
!=
null
&&
page
.
getRecords
()!=
null
){
if
(
page
!=
null
&&
page
.
getRecords
()!=
null
){
for
(
EmailPerson
person
:
page
.
getRecords
())
{
for
(
EmailPerson
person
:
page
.
getRecords
())
{
...
@@ -798,9 +785,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
...
@@ -798,9 +785,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
if
(
profile
.
contains
(
"wan"
))
{
if
(
profile
.
contains
(
"wan"
))
{
// content.setSendUserPhoto(StrUtil.isNotBlank(data.getPhoto())?data.getPhoto()
// content.setSendUserPhoto(StrUtil.isNotBlank(data.getPhoto())?data.getPhoto()
// .replace("http://147.1.3.87", "http://172.28.1.159:82"):data.getPhoto());
// .replace("http://147.1.3.87", "http://172.28.1.159:82"):data.getPhoto());
String
replace
=
data
.
getPhoto
()
String
replace
=
StrUtil
.
isNotBlank
(
data
.
getPhoto
())?
data
.
getPhoto
()
.
replace
(
"http://147.1.3.87"
,
"http://172.28.1.159:82"
)
.
replace
(
"http://147.1.3.87"
,
"http://172.28.1.159:82"
)
.
replace
(
"http://147.2.3.3"
,
"http://172.28.1.71"
);
.
replace
(
"http://147.2.3.3"
,
"http://172.28.1.71"
)
:
""
;
content
.
setSendUserPhoto
(
replace
);
content
.
setSendUserPhoto
(
replace
);
//userDto.setPhoto();
//userDto.setPhoto();
}
else
{
}
else
{
...
...
src/main/java/com/zq/email/utils/MsgUtil.java
View file @
107746a6
package
com
.
zq
.
email
.
utils
;
package
com
.
zq
.
email
.
utils
;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.zq.common.vo.CustomerUserVo
;
import
com.zq.common.vo.CustomerUserVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.email.constants.EmailConstant
;
import
com.zq.email.constants.EmailConstant
;
import
com.zq.email.dto.SystemInfo
;
import
com.zq.email.dto.SystemInfo
;
import
com.zq.email.dto.admin.UserDto
;
import
com.zq.email.dto.admin.UserDto
;
...
@@ -13,9 +15,7 @@ import org.springframework.scheduling.annotation.Async;
...
@@ -13,9 +15,7 @@ import org.springframework.scheduling.annotation.Async;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -35,13 +35,14 @@ public class MsgUtil {
...
@@ -35,13 +35,14 @@ public class MsgUtil {
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
(
"sender"
,
sender
);
params
.
put
(
"sender"
,
sender
);
params
.
put
(
"senderId"
,
content
.
getSendUserId
());
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"userIdList"
,
userVoList
.
stream
().
map
(
e
->
e
.
getId
()).
collect
(
Collectors
.
toList
()));
params
.
put
(
"userIdList"
,
userVoList
.
stream
().
map
(
e
->
e
.
getId
()).
collect
(
Collectors
.
toList
()));
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
log
.
debug
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
}
}
...
@@ -53,13 +54,14 @@ public class MsgUtil {
...
@@ -53,13 +54,14 @@ public class MsgUtil {
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
(
"sender"
,
sender
);
params
.
put
(
"sender"
,
sender
);
params
.
put
(
"senderId"
,
content
.
getSendUserId
());
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"userIdList"
,
userIds
);
params
.
put
(
"userIdList"
,
userIds
);
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
log
.
debug
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
}
}
...
@@ -71,7 +73,7 @@ public class MsgUtil {
...
@@ -71,7 +73,7 @@ public class MsgUtil {
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
(
"businessId"
,
businessId
);
params
.
put
(
"businessId"
,
businessId
);
log
.
debug
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
}
}
...
@@ -85,7 +87,7 @@ public class MsgUtil {
...
@@ -85,7 +87,7 @@ public class MsgUtil {
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"receiverId"
,
receiverId
);
params
.
put
(
"receiverId"
,
receiverId
);
params
.
put
(
"todoUserId"
,
receiverId
);
params
.
put
(
"todoUserId"
,
receiverId
);
log
.
debug
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
}
}
...
@@ -98,10 +100,16 @@ public class MsgUtil {
...
@@ -98,10 +100,16 @@ public class MsgUtil {
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"todoUserId"
,
receiverId
);
params
.
put
(
"todoUserId"
,
receiverId
);
params
.
put
(
"ids"
,
SetUtils
.
newIdentityHashSet
().
add
(
receiverId
));
LinkedHashSet
<
Long
>
receiverIds
=
new
LinkedHashSet
<>();
log
.
debug
(
"---已读消息代办: {}"
,
JSONUtil
.
toJsonStr
(
params
));
receiverIds
.
add
(
receiverId
);
params
.
put
(
"ids"
,
receiverIds
);
log
.
warn
(
"---已读消息代办: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
batchSetReadByUser
(
params
,
String
.
valueOf
(
businessId
));
messageFeignClient
.
batchSetReadByUser
(
params
,
String
.
valueOf
(
businessId
));
messageFeignClient
.
doneByBusinessIdAndSystemTagAndTodoUserId
(
params
);
messageFeignClient
.
doneByBusinessIdAndSystemTagAndTodoUserId
(
params
);
// ResultVo resultVo = messageFeignClient.batchSetReadByUser(params, String.valueOf(businessId));
// ResultVo resultVo1 = messageFeignClient.doneByBusinessIdAndSystemTagAndTodoUserId(params);
// log.warn("---已读消息代办返回: {}", JSONUtil.toJsonStr(resultVo));
// log.warn("---已读消息代办返回: {}", JSONUtil.toJsonStr(resultVo1));
}
}
...
...
src/main/resources/logback-spring.xml
View file @
107746a6
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<!--<configuration scan="true" scanPeriod="10 seconds">-->
<configuration>
<contextName>
logback
</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!-- <property name="log.path" value="/opt/oa-cloud/email/logs/"/>-->
<property
name=
"log.path"
value=
"/opt/services/oa/email/logs/"
/>
<!-- <property name="log.path" value="D:/seallog/"/>-->
<!--主要日志文件名-->
<property
name=
"default_log_file"
value=
"email"
/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<!-- 彩色日志格式 -->
<property
name=
"CONSOLE_LOG_PATTERN"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<configuration>
<!--输出到控制台-->
<!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
<appender
name=
"CONSOLE"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<include
resource=
"org/springframework/boot/logging/logback/defaults.xml"
/>
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<include
resource=
"org/springframework/boot/logging/logback/console-appender.xml"
/>
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
debug
</level>
<!-- 项目名称也是主要日志文件名 -->
</filter>
<property
name=
"PROJECT_NAME"
value=
"email"
/>
<!-- 日志目录 -->
<property
name=
"LOG_PATH"
value=
"/data/logs/${LOG_PATH:-${PROJECT_NAME}}"
/>
<!-- 日志格式 -->
<property
name=
"LOG_PATTERN"
value=
"%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n"
/>
<!-- the name of the application's logging context -->
<!-- by default each JMXConfigurator instance will be registered under the same name in the same JVM -->
<!-- we need to set the contextName for different apps, so that the jmxconfigurator won't collide -->
<contextName>
${PROJECT_NAME}
</contextName>
<jmxConfigurator/>
<!--主要日志配置 开始-->
<appender
name=
"SIZED_ROLLING_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder>
<encoder>
<Pattern>
${CONSOLE_LOG_PATTERN}
</Pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<!-- 设置字符集 -->
<charset>
UTF-8
</charset>
<charset>
UTF-8
</charset>
</encoder>
</encoder>
<file>
${LOG_PATH}/${PROJECT_NAME}.log
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${LOG_PATH}/${PROJECT_NAME}/${PROJECT_NAME}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
50MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 -->
<maxHistory>
15
</maxHistory>
</rollingPolicy>
</appender>
</appender>
<!-- 异步输出 -->
<appender
name=
"MAIN-LOGGER-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"SIZED_ROLLING_FILE"
/>
</appender>
<!--主要日志配置 结束-->
<!--DEBUG日志配置 开始-->
<!--输出到文件-->
<!-- 时间滚动输出 level为 DEBUG 日志 -->
<appender
name=
"DEBUG_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<appender
name=
"DEBUG_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_debug.log
</file>
<!--日志文件输出格式-->
<encoder>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
<!-- 设置字符集 -->
<charset>
UTF-8
</charset>
</encoder>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/debug.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 日志归档 -->
<fileNamePattern>
${LOG_PATH}/debug/debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${log.path}/debug/${default_log_file}-debug-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
<maxHistory>
15
</maxHistory>
</rollingPolicy>
</rollingPolicy>
<!-- 此日志文件只记录
debug
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
debug
</level>
<level>
DEBUG
</level>
<onMatch>
ACCEPT
</onMatch>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</filter>
</appender>
</appender>
<!-- 异步输出 -->
<appender
name=
"DEBUG-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"DEBUG_FILE"
/>
</appender>
<!--DEBUG日志配置 结束-->
<!--
时间滚动输出 level为 INFO 日志
-->
<!--
INFO日志配置 开始
-->
<appender
name=
"INFO_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<appender
name=
"INFO_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_info.log
</file>
<!--日志文件输出格式-->
<encoder>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
<charset>
UTF-8
</charset>
</encoder>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/info.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>
${LOG_PATH}/info/info.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${log.path}/info/${default_log_file}-info-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
<maxHistory>
15
</maxHistory>
</rollingPolicy>
</rollingPolicy>
<!-- 此日志文件只记录
info
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
info
</level>
<level>
INFO
</level>
<onMatch>
ACCEPT
</onMatch>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</filter>
</appender>
</appender>
<!-- 异步输出 -->
<appender
name=
"INFO-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"INFO_FILE"
/>
</appender>
<!--INFO日志配置 结束-->
<!--
时间滚动输出 level为 WARN 日志
-->
<!--
WARN日志配置 开始
-->
<appender
name=
"WARN_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<appender
name=
"WARN_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_warn.log
</file>
<!--日志文件输出格式-->
<encoder>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
<!-- 此处设置字符集 -->
<charset>
UTF-8
</charset>
</encoder>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/warn.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${
log.path}/warn/${default_log_file}-warn-
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${
LOG_PATH}/warn/warn.
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
<maxHistory>
15
</maxHistory>
</rollingPolicy>
</rollingPolicy>
<!-- 此日志文件只记录
warn
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
warn
</level>
<level>
WARN
</level>
<onMatch>
ACCEPT
</onMatch>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</filter>
</appender>
</appender>
<!-- 异步输出 -->
<appender
name=
"WARN-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"WARN_FILE"
/>
</appender>
<!--WARN日志配置 结束-->
<!--ERROR错误日志配置 开始-->
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender
name=
"ERROR_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<appender
name=
"ERROR_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${
log.path}/log_
error.log
</file>
<file>
${
LOG_PATH}/
error.log
</file>
<!--日志文件输出格式-->
<!--日志文件输出格式-->
<encoder>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
<!-- 此处设置字符集 -->
<charset>
UTF-8
</charset>
<!-- 此处设置字符集 -->
</encoder>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${
log.path}/error/${default_log_file}-error-
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${
LOG_PATH}/error/error.
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<!--日志文件保留天数-->
<maxHistory>
15
</maxHistory>
<maxHistory>
15
</maxHistory>
...
@@ -149,73 +169,33 @@
...
@@ -149,73 +169,33 @@
<onMismatch>
DENY
</onMismatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</filter>
</appender>
</appender>
<!-- 异步输出 -->
<appender
name=
"ERROR-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"ERROR_FILE"
/>
</appender>
<!--ERROR错误日志配置 结束-->
<!--
<root
level=
"INFO"
>
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
<!-- 控制台日志输出 -->
以及指定<appender>。<logger>仅有一个name属性,
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
如果未设置此属性,那么当前logger将会继承上级的级别。
addtivity:是否向上级logger传递打印信息。默认是true。
-->
<!--<logger name="org.springframework.web" level="info"/>-->
<!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
<!--
使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
-->
<logger
name=
"org.springframework.boot.autoconfigure"
level=
"error"
/>
<springProfile
name=
"local"
>
<logger
name=
"com.zq"
level=
"debug"
/>
</springProfile>
<springProfile
name=
"dev"
>
<logger
name=
"com.zq"
level=
"debug"
/>
</springProfile>
<springProfile
name=
"test"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"product"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"wanpro-test"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"wanpro-pro"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
不能设置为INHERITED或者同义词NULL。默认是DEBUG
可以包含零个或多个元素,标识这个appender将会添加到这个logger。
-->
<root
level=
"info"
>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"DEBUG_FILE"
/>
<!-- 全部日志不区分级别 -->
<appender-ref
ref=
"INFO_FILE"
/>
<appender-ref
ref=
"MAIN-LOGGER-APPENDER"
/>
<appender-ref
ref=
"WARN_FILE"
/>
<!-- 区分日志级别 -->
<appender-ref
ref=
"ERROR_FILE"
/>
<appender-ref
ref=
"DEBUG-APPENDER"
/>
<appender-ref
ref=
"INFO-APPENDER"
/>
<appender-ref
ref=
"WARN-APPENDER"
/>
<appender-ref
ref=
"ERROR-APPENDER"
/>
</root>
</root>
<logger
name=
"com.zq.message"
level=
"DEBUG"
/>
<!--生产环境:输出到文件-->
<!--开发环境:打印控制台-->
<!-- <springProfile name="product">-->
<springProfile
name=
"!dev"
>
<!-- <root level="info">-->
<logger
name=
"com.zq.message.mapper"
level=
"INFO"
/>
<!-- <appender-ref ref="CONSOLE" />-->
</springProfile>
<!-- <appender-ref ref="DEBUG_FILE" />-->
<!-- <appender-ref ref="INFO_FILE" />-->
<!-- <appender-ref ref="ERROR_FILE" />-->
<!-- <appender-ref ref="WARN_FILE" />-->
<!-- </root>-->
<!-- </springProfile>-->
</configuration>
</configuration>
src/main/resources/mapper/EmailPersonMapper.xml
View file @
107746a6
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<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(
EP."ID"
)
COUNT(
1
)
FROM
FROM
"EMAIL_PERSON" EP
"EMAIL_PERSON" EP
<where>
<where>
...
@@ -88,7 +88,6 @@
...
@@ -88,7 +88,6 @@
<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
EP1.*
EP1.*
FROM
FROM
...
...
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