Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yanxuan-qc-change-system
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
胡园园
yanxuan-qc-change-system
Commits
f6bd68d4
Commit
f6bd68d4
authored
Nov 23, 2022
by
jx-art
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
邮箱模块迁移
parent
dcf0c65c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
69 changed files
with
3535 additions
and
1 deletions
+3535
-1
pom.xml
pom.xml
+17
-0
Application.java
...com/netease/mail/yanxuan/change/assembly/Application.java
+1
-1
RpcTemplate.java
...l/yanxuan/change/integration/email/conig/RpcTemplate.java
+271
-0
ThirdCommonApolloConfig.java
...ange/integration/email/conig/ThirdCommonApolloConfig.java
+74
-0
DeptIdLevelLeaderDTO.java
...an/change/integration/email/dto/DeptIdLevelLeaderDTO.java
+31
-0
OrgPosDTO.java
.../mail/yanxuan/change/integration/email/dto/OrgPosDTO.java
+59
-0
RoleBaseDTO.java
...ail/yanxuan/change/integration/email/dto/RoleBaseDTO.java
+39
-0
ThirdOrgPosDTO.java
.../yanxuan/change/integration/email/dto/ThirdOrgPosDTO.java
+27
-0
UserInfoDTO.java
...ail/yanxuan/change/integration/email/dto/UserInfoDTO.java
+62
-0
UserOrgMetaDTO.java
.../yanxuan/change/integration/email/dto/UserOrgMetaDTO.java
+127
-0
UserProductRoleStaticsInfosDTO.java
...integration/email/dto/UserProductRoleStaticsInfosDTO.java
+31
-0
UserUniteOrgMetaDTO.java
...uan/change/integration/email/dto/UserUniteOrgMetaDTO.java
+112
-0
AbnormalBathEventEhcEmailModel.java
...tegration/email/email/AbnormalBathEventEhcEmailModel.java
+29
-0
AbnormalEhcEmailModel.java
...change/integration/email/email/AbnormalEhcEmailModel.java
+73
-0
AbnormalPunishFlowEhcEmailModel.java
...egration/email/email/AbnormalPunishFlowEhcEmailModel.java
+37
-0
AbnormalTaskFlowEhcEmailModel.java
...ntegration/email/email/AbnormalTaskFlowEhcEmailModel.java
+43
-0
AllUserProductRoleInfosResponseResult.java
...on/email/email/AllUserProductRoleInfosResponseResult.java
+17
-0
BaseConvertor.java
...yanxuan/change/integration/email/email/BaseConvertor.java
+49
-0
Constants.java
...ail/yanxuan/change/integration/email/email/Constants.java
+307
-0
DeptIdLevelResponseResult.java
...ge/integration/email/email/DeptIdLevelResponseResult.java
+18
-0
EmailEhcFactor.java
...anxuan/change/integration/email/email/EmailEhcFactor.java
+38
-0
EmailFactor.java
...l/yanxuan/change/integration/email/email/EmailFactor.java
+54
-0
EmailTemplateResponResult.java
...ge/integration/email/email/EmailTemplateResponResult.java
+20
-0
EmailTemplateRpcResult.java
...hange/integration/email/email/EmailTemplateRpcResult.java
+38
-0
FlowEhcOverTimeEmailModel.java
...ge/integration/email/email/FlowEhcOverTimeEmailModel.java
+25
-0
IusRpcResult.java
.../yanxuan/change/integration/email/email/IusRpcResult.java
+43
-0
JumpLinkModel.java
...yanxuan/change/integration/email/email/JumpLinkModel.java
+17
-0
OverTimeFlowVo.java
...anxuan/change/integration/email/email/OverTimeFlowVo.java
+28
-0
OverTimeUserVo.java
...anxuan/change/integration/email/email/OverTimeUserVo.java
+114
-0
Pagination.java
...il/yanxuan/change/integration/email/email/Pagination.java
+42
-0
ProblemConfigureModel.java
...change/integration/email/email/ProblemConfigureModel.java
+22
-0
QueryUserInfoResponseResult.java
.../integration/email/email/QueryUserInfoResponseResult.java
+18
-0
QueryUserInfoVO.java
...nxuan/change/integration/email/email/QueryUserInfoVO.java
+22
-0
ResponseResult.java
...anxuan/change/integration/email/email/ResponseResult.java
+15
-0
RoleResponseResult.java
...an/change/integration/email/email/RoleResponseResult.java
+18
-0
RpcObjectHandler.java
...xuan/change/integration/email/email/RpcObjectHandler.java
+25
-0
SearchResult.java
.../yanxuan/change/integration/email/email/SearchResult.java
+20
-0
SupplierEmailResponseResult.java
.../integration/email/email/SupplierEmailResponseResult.java
+13
-0
SupplierEmailSendReq.java
.../change/integration/email/email/SupplierEmailSendReq.java
+21
-0
TaskEhcFlowOverTimeEmailModel.java
...ntegration/email/email/TaskEhcFlowOverTimeEmailModel.java
+49
-0
UserUniteOrgMetaResponseResult.java
...tegration/email/email/UserUniteOrgMetaResponseResult.java
+18
-0
UserVO.java
...e/mail/yanxuan/change/integration/email/email/UserVO.java
+31
-0
AllTaskFlowTypeEnum.java
...n/change/integration/email/enums/AllTaskFlowTypeEnum.java
+60
-0
EmailEhcFlowEnum.java
...xuan/change/integration/email/enums/EmailEhcFlowEnum.java
+129
-0
EmailParamEnum.java
...anxuan/change/integration/email/enums/EmailParamEnum.java
+101
-0
EmailTemplateEnum.java
...uan/change/integration/email/enums/EmailTemplateEnum.java
+143
-0
EmailType.java
...ail/yanxuan/change/integration/email/enums/EmailType.java
+26
-0
EmailTypeEnum.java
...yanxuan/change/integration/email/enums/EmailTypeEnum.java
+20
-0
ExecUserTypeEnum.java
...xuan/change/integration/email/enums/ExecUserTypeEnum.java
+43
-0
OrgUserTypeEnum.java
...nxuan/change/integration/email/enums/OrgUserTypeEnum.java
+42
-0
ProductCodeEnum.java
...nxuan/change/integration/email/enums/ProductCodeEnum.java
+85
-0
StaffStatusEnum.java
...nxuan/change/integration/email/enums/StaffStatusEnum.java
+49
-0
RpcConnectException.java
...ange/integration/email/exception/RpcConnectException.java
+11
-0
RpcException.java
...xuan/change/integration/email/exception/RpcException.java
+19
-0
RpcStatusException.java
...hange/integration/email/exception/RpcStatusException.java
+24
-0
RpcTimeoutException.java
...ange/integration/email/exception/RpcTimeoutException.java
+11
-0
IEmailEhcService.java
...an/change/integration/email/service/IEmailEhcService.java
+111
-0
IEmailService.java
...nxuan/change/integration/email/service/IEmailService.java
+50
-0
IIusService.java
...yanxuan/change/integration/email/service/IIusService.java
+137
-0
ISupplierEmailService.java
...ange/integration/email/service/ISupplierEmailService.java
+11
-0
IUasEhcClient.java
...nxuan/change/integration/email/service/IUasEhcClient.java
+21
-0
EmailEhcServiceImpl.java
...e/integration/email/service/impl/EmailEhcServiceImpl.java
+0
-0
EmailServiceImpl.java
...ange/integration/email/service/impl/EmailServiceImpl.java
+122
-0
EmailTemplateServiceImpl.java
...egration/email/service/impl/EmailTemplateServiceImpl.java
+35
-0
IUasClientEhcImpl.java
...nge/integration/email/service/impl/IUasClientEhcImpl.java
+70
-0
IusServiceImpl.java
...change/integration/email/service/impl/IusServiceImpl.java
+0
-0
SupplierEmailServiceImpl.java
...egration/email/service/impl/SupplierEmailServiceImpl.java
+47
-0
EncodeUtil.java
...ail/yanxuan/change/integration/email/util/EncodeUtil.java
+53
-0
HttpClientUtil.java
...yanxuan/change/integration/email/util/HttpClientUtil.java
+0
-0
No files found.
pom.xml
View file @
f6bd68d4
...
@@ -389,6 +389,23 @@
...
@@ -389,6 +389,23 @@
<artifactId>
yanxuan-qc-parent
</artifactId>
<artifactId>
yanxuan-qc-parent
</artifactId>
<version>
2.0.0-SNAPSHOT
</version>
<version>
2.0.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.netease.mail.yanxuan
</groupId>
<artifactId>
dschedule-boot-starter
</artifactId>
<version>
1.0.3-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.netease.mailsaas
</groupId>
<artifactId>
saas-kit-java-bundle
</artifactId>
<version>
0.1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
org.assertj
</groupId>
<artifactId>
assertj-core
</artifactId>
<version>
3.18.1
</version>
</dependency>
</dependencies>
</dependencies>
<repositories>
<repositories>
...
...
yanxuan-qc-change-system-assembly/src/main/java/com/netease/mail/yanxuan/change/assembly/Application.java
View file @
f6bd68d4
...
@@ -6,13 +6,13 @@ import org.springframework.boot.SpringApplication;
...
@@ -6,13 +6,13 @@ import org.springframework.boot.SpringApplication;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
tk.mybatis.spring.annotation.MapperScan
;
import
tk.mybatis.spring.annotation.MapperScan
;
/**
/**
* 项目启动类
* 项目启动类
*/
*/
@ComponentScan
(
basePackages
=
"com.netease.mail.yanxuan.change"
)
@ComponentScan
(
basePackages
=
"com.netease.mail.yanxuan.change"
)
@ComponentScan
(
basePackages
=
"com.netease.mail.yanxuan.qc"
)
@MapperScan
(
"com.netease.mail.yanxuan.change.dal.mapper"
)
@MapperScan
(
"com.netease.mail.yanxuan.change.dal.mapper"
)
@EnableApolloConfig
@EnableApolloConfig
@EnableMissaClients
(
basePackages
=
"com.netease.mail.yanxuan.change"
)
@EnableMissaClients
(
basePackages
=
"com.netease.mail.yanxuan.change"
)
...
...
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/conig/RpcTemplate.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
conig
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.parser.ParserConfig
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailType
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcException
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcStatusException
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcTimeoutException
;
import
com.netease.mail.yanxuan.change.integration.email.util.EncodeUtil
;
import
com.netease.mail.yanxuan.change.integration.email.util.HttpClientUtil
;
import
org.aspectj.weaver.Checker
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
/**
* rpc 请求封装,在 HttpClientUtil 基础上加入了返回值处理和日志
*
* @author lwtang
* @date 2019-02-19
*/
@Component
public
class
RpcTemplate
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
RpcTemplate
.
class
);
@Value
(
"${act.rpc.get.retry:1}"
)
private
int
rpcGetRetry
;
@Value
(
"${act.rpc.post.retry:0}"
)
private
int
rpcPostRetry
;
public
RpcTemplate
()
{
ParserConfig
.
getGlobalInstance
().
setAutoTypeSupport
(
true
);
}
private
String
convertParam
(
Object
param
)
{
if
(
param
instanceof
String
)
{
return
(
String
)
param
;
}
String
reqParam
=
""
;
if
(
param
instanceof
Map
)
{
reqParam
=
EncodeUtil
.
encodeMap
((
Map
)
param
);
}
else
if
(
param
!=
null
)
{
reqParam
=
JSON
.
toJSONString
(
param
);
}
return
reqParam
;
}
private
<
T
>
T
execute
(
String
url
,
Object
params
,
CallHandler
<
T
>
handler
,
CallTemplate
callTemplate
,
int
retryTime
,
Method
method
)
{
int
tryTimes
=
0
;
RpcException
rpcException
=
null
;
String
respBody
=
null
;
int
statusCode
=
200
;
while
(
tryTimes
<=
retryTime
)
{
long
startTime
=
System
.
currentTimeMillis
();
try
{
respBody
=
callTemplate
.
executeCall
();
if
(
StringUtils
.
isEmpty
(
respBody
))
{
throw
new
RpcException
(
"response empty"
);
}
T
t
=
handler
.
handle
(
respBody
);
return
t
;
}
catch
(
RpcTimeoutException
e
)
{
rpcException
=
e
;
}
catch
(
RpcStatusException
e
)
{
rpcException
=
e
;
statusCode
=
e
.
getCode
();
}
catch
(
RpcException
e
)
{
rpcException
=
e
;
}
catch
(
Exception
e
)
{
rpcException
=
new
RpcException
(
e
);
}
finally
{
if
(
logger
.
isDebugEnabled
())
{
long
costTime
=
System
.
currentTimeMillis
()
-
startTime
;
String
reqParam
=
convertParam
(
params
);
logger
.
debug
(
"process request, url={}, method={}, params={}, statusCode = {}, response={}, cost={}ms"
,
url
,
method
.
name
(),
reqParam
,
statusCode
,
respBody
,
costTime
);
}
}
tryTimes
++;
}
logger
.
error
(
"request error, url={}, params={}, statusCode = {}, respBody={}"
,
url
,
convertParam
(
params
),
statusCode
,
respBody
,
rpcException
);
if
(
rpcException
==
null
)
{
rpcException
=
new
RpcException
(
"服务异常"
);
}
throw
rpcException
;
}
/**
* Get 请求
*
* @param url
* @param params
* @param header
* @param timeout
* -1 取默认的超时时间
* @param handler
* @param <T>
* @return
*/
public
<
T
>
T
get
(
String
url
,
Map
<
String
,
Object
>
params
,
Map
<
String
,
String
>
header
,
int
timeout
,
CallHandler
<
T
>
handler
,
Integer
retryTimes
)
{
CallTemplate
template
=
()
->
HttpClientUtil
.
get
(
url
,
params
,
header
,
timeout
);
return
this
.
execute
(
url
,
params
,
handler
,
template
,
retryTimes
,
Method
.
GET
);
}
public
<
T
>
T
get
(
String
url
,
Map
<
String
,
Object
>
params
,
CallHandler
<
T
>
handler
)
{
return
get
(
url
,
params
,
null
,
-
1
,
handler
,
rpcGetRetry
);
}
/**
* Post请求(url encoded)
*
* @param url
* @param params
* @param timeout
* @param handler
* @param <T>
* @return
*/
public
<
T
>
T
post
(
String
url
,
Map
<
String
,
Object
>
params
,
int
timeout
,
CallHandler
<
T
>
handler
,
Integer
retryTime
)
{
CallTemplate
template
=
()
->
HttpClientUtil
.
post
(
url
,
params
,
timeout
);
return
this
.
execute
(
url
,
params
,
handler
,
template
,
retryTime
,
Method
.
POST
);
}
/**
* Post请求(url encoded)
*
* @param url
* @param params
* @param timeout
* @param handler
* @param <T>
* @return
*/
public
<
T
>
T
post
(
String
url
,
Map
<
String
,
Object
>
params
,
int
timeout
,
CallHandler
<
T
>
handler
)
{
CallTemplate
template
=
()
->
HttpClientUtil
.
post
(
url
,
params
,
timeout
);
return
this
.
execute
(
url
,
params
,
handler
,
template
,
rpcPostRetry
,
Method
.
POST
);
}
/**
* Post Json请求
*
* @param url
* @param params
* @param timeout
* @param handler
* @param <T>
* @return
*/
public
<
T
>
T
postJson
(
String
url
,
String
params
,
int
timeout
,
CallHandler
<
T
>
handler
,
Integer
retryTime
)
{
CallTemplate
template
=
()
->
HttpClientUtil
.
postJson
(
url
,
params
,
timeout
);
return
this
.
execute
(
url
,
params
,
handler
,
template
,
retryTime
,
Method
.
POST
);
}
/**
* Post Json请求
*
* @param url
* @param params
* @param timeout
* @param handler
* @param <T>
* @return
*/
public
<
T
>
T
postJson
(
String
url
,
String
params
,
int
timeout
,
CallHandler
<
T
>
handler
)
{
CallTemplate
template
=
()
->
HttpClientUtil
.
postJson
(
url
,
params
,
timeout
);
return
this
.
execute
(
url
,
params
,
handler
,
template
,
rpcPostRetry
,
Method
.
POST
);
}
enum
RpcStatus
{
/**
* 成功
*/
SUCCESS
(
1
),
/**
* 告警(请求成功,但非理想值)
*/
WARNING
(
2
),
/**
* 异常
*/
EXCEPTION
(
3
),
/**
* 超时
*/
TIMEOUT
(
4
);
private
int
value
;
RpcStatus
(
int
value
)
{
this
.
value
=
value
;
}
public
int
getValue
()
{
return
value
;
}
}
enum
Method
{
/**
* Get请求
*/
GET
,
/**
* Post表单请求
*/
POST
,
}
/**
* 模板调用
*/
@FunctionalInterface
public
interface
CallTemplate
{
/**
* 模板调用类
*/
String
executeCall
();
}
/**
* 报文解析
*/
@FunctionalInterface
public
interface
CallHandler
<
T
>
{
/**
* 报文解析
*
* @param resp
* response body
*/
T
handle
(
String
resp
)
throws
IOException
;
/**
* 校验数据体
*
* @param t
* @return
*/
default
boolean
check
(
T
t
)
{
return
true
;
}
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/conig/ThirdCommonApolloConfig.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
conig
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
com.netease.mail.yanxuan.change.integration.email.email.JumpLinkModel
;
import
com.netease.mail.yanxuan.change.integration.email.email.ProblemConfigureModel
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
com.ctrip.framework.apollo.spring.annotation.EnableAutoUpdateApolloConfig
;
import
com.ctrip.framework.apollo.spring.annotation.ValueMapping
;
import
lombok.Data
;
import
org.springframework.util.CollectionUtils
;
/**
* 第三方平台通用apollo配置
*/
@Data
@Component
@EnableAutoUpdateApolloConfig
(
"3rd.base"
)
public
class
ThirdCommonApolloConfig
{
private
static
final
String
DEFAULT
=
"default"
;
/**
* 异常超级管理员(各个接入的服务业务架构统一角色id)
*/
@Value
(
"${abnormalAdminRoleId:7956010101}"
)
private
Long
abnormalAdminRoleId
;
/**
* 各工作台待办跳转链接
*/
@ValueMapping
(
"${jumpLink:[]}"
)
private
List
<
JumpLinkModel
>
jumpLinkMap
;
/**
* 各工作台邮件
*/
@ValueMapping
(
"${emailFlowUrl:[]}"
)
private
List
<
JumpLinkModel
>
emailFlowUrl
;
/**
* 根据产品号获取跳转链接
*
* @param productCode
* @return
*/
public
Optional
<
JumpLinkModel
>
getJumpLinkByProductCode
(
String
productCode
)
{
List
<
JumpLinkModel
>
list
=
jumpLinkMap
.
stream
().
filter
(
x
->
productCode
.
equals
(
x
.
getProductCode
()))
.
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
return
Optional
.
of
(
list
.
get
(
0
));
}
else
{
list
=
jumpLinkMap
.
stream
().
filter
(
x
->
DEFAULT
.
equals
(
x
.
getProductCode
())).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
return
Optional
.
of
(
list
.
get
(
0
));
}
}
return
Optional
.
of
(
jumpLinkMap
.
get
(
0
));
}
@ValueMapping
(
"${warehouseConfigureModel:{}}"
)
private
ProblemConfigureModel
warehouseConfigureModel
;
@ValueMapping
(
"${carrierConfigureModel:{}}"
)
private
ProblemConfigureModel
carrierConfigureModel
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/DeptIdLevelLeaderDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
lombok.Data
;
@Data
public
class
DeptIdLevelLeaderDTO
{
private
Integer
level
;
private
Boolean
locked
;
private
Integer
orgPosId
;
private
String
orgPosName
;
private
Integer
parentOrgPosId
;
private
Integer
postType
;
private
Integer
rootOrgPosId
;
private
Integer
staffStatus
;
private
String
uid
;
private
Long
userId
;
private
String
userName
;
private
Integer
userType
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/OrgPosDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
java.io.Serializable
;
public
class
OrgPosDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
4406420123437327405L
;
private
int
level
;
private
long
orgPosId
;
private
String
orgPosName
;
private
long
parentOrgPosId
;
private
Integer
posStructType
;
public
int
getLevel
()
{
return
level
;
}
public
void
setLevel
(
int
level
)
{
this
.
level
=
level
;
}
public
long
getOrgPosId
()
{
return
orgPosId
;
}
public
void
setOrgPosId
(
long
orgPosId
)
{
this
.
orgPosId
=
orgPosId
;
}
public
String
getOrgPosName
()
{
return
orgPosName
;
}
public
void
setOrgPosName
(
String
orgPosName
)
{
this
.
orgPosName
=
orgPosName
;
}
public
long
getParentOrgPosId
()
{
return
parentOrgPosId
;
}
public
void
setParentOrgPosId
(
long
parentOrgPosId
)
{
this
.
parentOrgPosId
=
parentOrgPosId
;
}
public
int
getPosStructType
()
{
return
posStructType
;
}
public
void
setPosStructType
(
int
posStructType
)
{
this
.
posStructType
=
posStructType
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/RoleBaseDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
RoleBaseDTO
{
/**
* 角色唯一id
*/
private
Long
roleId
;
/**
* 角色名称
*/
private
String
name
;
private
String
remark
;
private
Long
updateTime
;
/**
* 是否被锁定
*/
private
Boolean
locked
;
/**
* 创建id
*/
private
Long
creatorId
;
private
Integer
type
;
private
Long
expireTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/ThirdOrgPosDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
ThirdOrgPosDTO
{
private
String
deptId
;
private
Integer
level
;
private
Integer
orgPosId
;
private
String
orgPosName
;
private
Integer
parentOrgPosId
;
private
Integer
posStructType
;
private
Integer
rootOrgPosId
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/UserInfoDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
lombok.Data
;
@Data
public
class
UserInfoDTO
{
private
Long
createTime
;
private
Integer
deptIdLevel1
;
private
Integer
deptIdLevel2
;
private
Integer
deptIdLevel3
;
private
Integer
deptIdLevel4
;
/**
* 一级部门
*/
private
String
deptLevel1
;
/**
* 二级部门
*/
private
String
deptLevel2
;
/**
* 三级部门
*/
private
String
deptLevel3
;
/**
* 四级部门
*/
private
String
deptLevel4
;
private
String
extEmail
;
private
Long
firstLoginTime
;
private
Long
lastLoginTime
;
private
Boolean
locked
;
private
String
name
;
private
Integer
orgPosId
;
private
String
srcCode
;
/**
* 用户的身份信息,0 正式,1 试用,2 外包,3 派遣,4 实习-签三方,5 实习-未签三方,6 离职
*/
private
Integer
staffStatus
;
private
String
uid
;
private
Long
userId
;
private
Integer
userType
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/UserOrgMetaDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
java.io.Serializable
;
/**
* @author hzfujieqi
*/
public
class
UserOrgMetaDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2381352783777881742L
;
//用户职位ID
private
long
orgPosId
;
//用户id
private
long
userId
;
//用户的上一级职位id
private
long
parentOrgPosId
;
//用户的邮箱
private
String
uid
;
//用户的真名
private
String
userName
;
//用户的职位级别
private
int
level
;
//职位名称
private
String
orgPosName
;
//锁定状态
private
Boolean
locked
;
//职位类型
private
int
posType
;
//业务方附加信息
private
String
extInfo
;
public
long
getOrgPosId
()
{
return
orgPosId
;
}
public
void
setOrgPosId
(
long
orgPosId
)
{
this
.
orgPosId
=
orgPosId
;
}
public
long
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
long
userId
)
{
this
.
userId
=
userId
;
}
public
long
getParentOrgPosId
()
{
return
parentOrgPosId
;
}
public
void
setParentOrgPosId
(
long
parentOrgPosId
)
{
this
.
parentOrgPosId
=
parentOrgPosId
;
}
public
String
getUid
()
{
return
uid
;
}
public
void
setUid
(
String
uid
)
{
this
.
uid
=
uid
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
public
int
getLevel
()
{
return
level
;
}
public
void
setLevel
(
int
level
)
{
this
.
level
=
level
;
}
public
String
getOrgPosName
()
{
return
orgPosName
;
}
public
void
setOrgPosName
(
String
orgPosName
)
{
this
.
orgPosName
=
orgPosName
;
}
public
Boolean
getLocked
()
{
return
locked
;
}
public
void
setLocked
(
Boolean
locked
)
{
this
.
locked
=
locked
;
}
public
int
getPosType
()
{
return
posType
;
}
public
void
setPosType
(
int
posType
)
{
this
.
posType
=
posType
;
}
public
String
getExtInfo
()
{
return
extInfo
;
}
public
void
setExtInfo
(
String
extInfo
)
{
this
.
extInfo
=
extInfo
;
}
@Override
public
String
toString
()
{
return
"UserOrgMetaDTO{"
+
"orgPosId="
+
orgPosId
+
", userId="
+
userId
+
", parentOrgPosId="
+
parentOrgPosId
+
", uid='"
+
uid
+
'\''
+
", userName='"
+
userName
+
'\''
+
", level="
+
level
+
", orgPosName='"
+
orgPosName
+
'\''
+
", locked="
+
locked
+
", posType="
+
posType
+
", extInfo='"
+
extInfo
+
'\''
+
'}'
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/UserProductRoleStaticsInfosDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
UserProductRoleStaticsInfosDTO
{
private
String
uid
;
private
String
name
;
private
Boolean
locked
;
private
Boolean
isVirtual
;
/**
* 组织身份权限
*/
private
List
<
RoleBaseDTO
>
groupIdentityProductRoleInfos
;
/**
* 特殊权限
*/
private
List
<
RoleBaseDTO
>
userProductRoleInfoVos
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/dto/UserUniteOrgMetaDTO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
dto
;
import
java.util.List
;
public
class
UserUniteOrgMetaDTO
extends
UserOrgMetaDTO
{
private
static
final
long
serialVersionUID
=
-
1682465589038072525L
;
/**
* 关联类型 type NORMAL(0, "普通职员"), DERECT(1, "指导员"), MANAGER(2, "负责人");
*/
private
int
type
;
/**
* 员工职责
*/
private
String
duty
;
/**
* 员工状态
*/
private
int
staffStatus
;
/**
* 员工工号
*/
private
String
employeeNum
;
/**
* 员工在职信息类型,OAWorkInfoEnum(0-不在OA,1-在严选事业部,2-在外部门)
*/
private
int
workInfoType
;
/**
* 在职状态,EmployeeStateEnum(0-试用,1-正式,5-离职)
*/
private
int
workState
;
/**
* 0-未收藏,1-已收藏
*/
private
int
focusStatus
;
/**
* 所在的其他职位列表,不包含当前职位
*/
private
List
<
OrgPosDTO
>
multiOrgPoss
;
public
int
getType
()
{
return
type
;
}
public
void
setType
(
int
type
)
{
this
.
type
=
type
;
}
public
String
getDuty
()
{
return
duty
;
}
public
void
setDuty
(
String
duty
)
{
this
.
duty
=
duty
;
}
public
int
getStaffStatus
()
{
return
staffStatus
;
}
public
void
setStaffStatus
(
int
staffStatus
)
{
this
.
staffStatus
=
staffStatus
;
}
public
String
getEmployeeNum
()
{
return
employeeNum
;
}
public
void
setEmployeeNum
(
String
employeeNum
)
{
this
.
employeeNum
=
employeeNum
;
}
public
int
getWorkInfoType
()
{
return
workInfoType
;
}
public
void
setWorkInfoType
(
int
workInfoType
)
{
this
.
workInfoType
=
workInfoType
;
}
public
int
getWorkState
()
{
return
workState
;
}
public
void
setWorkState
(
int
workState
)
{
this
.
workState
=
workState
;
}
public
int
getFocusStatus
()
{
return
focusStatus
;
}
public
void
setFocusStatus
(
int
focusStatus
)
{
this
.
focusStatus
=
focusStatus
;
}
public
List
<
OrgPosDTO
>
getMultiOrgPoss
()
{
return
multiOrgPoss
;
}
public
void
setMultiOrgPoss
(
List
<
OrgPosDTO
>
multiOrgPoss
)
{
this
.
multiOrgPoss
=
multiOrgPoss
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/AbnormalBathEventEhcEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Builder
;
import
lombok.Data
;
@Data
@Builder
public
class
AbnormalBathEventEhcEmailModel
{
private
String
creator
;
private
String
abnormalName
;
private
String
taskFlowId
;
private
String
deliverUserEmail
;
private
String
deliverUserName
;
private
String
cancelUserEmail
;
private
String
cancelUserName
;
private
String
url
;
private
String
discoverDescription
;
private
String
discoverTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/AbnormalEhcEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
AbnormalEhcEmailModel
{
/**
* 异常创建人
*/
private
String
createUid
;
/**
* 异常问题名称
*/
private
String
abnormalName
;
/**
* 工单id
*/
private
String
flowId
;
/**
* 异常问题负责人
*/
private
String
abnormalPrincipalUid
;
/**
* 异常问题负责人
*/
private
String
abnormalPrincipalUserName
;
/**
* 操作人邮箱
*/
private
String
operatorUid
;
/**
* 操作人姓名
*/
private
String
operatorUserName
;
/**
* 审批人邮箱
*/
private
String
approverUid
;
/**
* 审批人姓名
*/
private
String
approverUserName
;
/**
* 工单链接
*/
private
String
flowUrl
;
/**
* 发现描述
*/
private
String
discoverDescription
;
/**
* 发现时间
*/
private
String
discoverTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/AbnormalPunishFlowEhcEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Builder
;
import
lombok.Data
;
@Data
@Builder
public
class
AbnormalPunishFlowEhcEmailModel
{
private
String
creator
;
private
String
abnormalName
;
private
String
taskFlowId
;
private
String
execUserEmail
;
private
String
execUserName
;
private
String
cancelUserEmail
;
private
String
cancelUserName
;
private
String
deliverUserEmail
;
private
String
deliverUserName
;
private
String
approveUserEmail
;
private
String
approveUserName
;
private
String
url
;
private
String
discoverDescription
;
private
String
discoverTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/AbnormalTaskFlowEhcEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Builder
;
import
lombok.Data
;
@Data
@Builder
public
class
AbnormalTaskFlowEhcEmailModel
{
private
String
creator
;
private
String
abnormalName
;
private
String
taskFlowId
;
private
String
taskTypeName
;
private
String
execUserEmail
;
private
String
execUserName
;
private
String
cancelUserEmail
;
private
String
cancelUserName
;
private
String
execUser
;
private
String
execName
;
private
String
approveUserEmail
;
private
String
approveUserName
;
private
String
url
;
private
Integer
execUserType
;
private
String
discoverDescription
;
private
String
discoverTime
;
private
String
taskDescription
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/AllUserProductRoleInfosResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserProductRoleStaticsInfosDTO
;
import
lombok.Data
;
@Data
public
class
AllUserProductRoleInfosResponseResult
{
private
Integer
code
;
private
String
errorCode
;
private
String
errorMsg
;
private
SearchResult
<
UserProductRoleStaticsInfosDTO
>
data
;
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/BaseConvertor.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
org.assertj.core.util.Lists
;
import
lombok.SneakyThrows
;
import
org.springframework.beans.BeanUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
BaseConvertor
{
@SneakyThrows
public
static
<
T
>
T
convert
(
Object
object
,
final
Class
<
T
>
clazz
)
{
if
(
object
==
null
)
{
return
null
;
}
T
t
=
clazz
.
newInstance
();
BeanUtils
.
copyProperties
(
object
,
t
);
return
t
;
}
@SneakyThrows
public
static
void
copyProperties
(
Object
source
,
Object
target
)
{
BeanUtils
.
copyProperties
(
source
,
target
);
}
@SneakyThrows
public
static
<
T
>
List
<
T
>
convert
(
List
<?>
objects
,
final
Class
<
T
>
clazz
)
{
if
(
org
.
apache
.
commons
.
collections
.
CollectionUtils
.
isEmpty
(
objects
))
{
return
new
ArrayList
<>();
}
List
<
T
>
retList
=
Lists
.
newArrayList
();
objects
.
forEach
(
object
->
{
try
{
T
t
=
clazz
.
newInstance
();
BeanUtils
.
copyProperties
(
object
,
t
);
retList
.
add
(
t
);
}
catch
(
Exception
ex
)
{
try
{
throw
ex
;
}
catch
(
InstantiationException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
}
});
return
retList
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/Constants.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
/**
* 常量定义
*
* @author lwtang
* @date 2018-10-16
*/
public
class
Constants
{
public
static
final
String
EHC_PRODUCT_CODE
=
"ehc"
;
public
static
final
Integer
ONE_HUNDRED
=
100
;
public
static
final
Integer
ONE_THOUSAND
=
1000
;
public
static
final
String
SQE_NAME
=
"sqe_name:%s"
;
public
static
final
Integer
MAX_QUERY_SIZE
=
200
;
public
static
final
String
REQUEST_HEADER_PRODUCT_CODE
=
"product-code"
;
/**
* GlobalId 自增redis值
*/
public
static
final
String
ABNORMAL_FLOW_GLOBAL_ID
=
"abnormalFlowGlobalId"
;
public
static
final
String
TASK_FLOW_GLOBAL_ID
=
"taskFlowGlobalId"
;
/**
* GlobalId前缀
*/
public
static
final
String
ABNORMAL_FLOW_GLOBAL_NAME
=
"QC-ABNORMAL-FLOW-"
;
/**
* 所有异常工单缓存key
*/
public
static
final
String
ALL_ABNORMAL_FLOW_KEY
=
"all_abnormal_flow"
;
/**
* 新增工单key
*/
public
static
final
String
ADD_NEW_FLOW_KEY
=
"add_new_flow_%s"
;
/**
*
*/
public
static
final
String
TITLE_1
=
"您好,系统内临期、延期的异常、任务处理工单汇总如下,请及时处理!"
;
/**
*
*/
public
static
final
String
TITLE_2
=
"您好,您的小组成员临期或过期的异常问题处理工单如下,请及时处理!"
;
/**
*
*/
public
static
final
String
TITLE_3
=
"您好,系统内临期、延期的异常、任务处理工单汇总如下,无需您处理,请知悉!"
;
/**
* 舆情配置附加信息 前N个周期的数据均超过阈值
*/
public
static
final
String
ABNORMAL_RULE_EXCEEDING_CYCLE_NUM
=
"前%s个周期的数据均超过阈值"
;
/**
* 舆情配置附加信息 前N个周期的数据对比呈现持续上升趋势
*/
public
static
final
String
ABNORMAL_RULE_RISING_CYCLE_NUM
=
"前%s个周期的数据对比呈现持续上升趋势"
;
/**
* 舆情配置附加信息 且
*/
public
static
final
String
ABNORMAL_RULE_AND
=
"且"
;
/**
* 舆情配置附加信息 或
*/
public
static
final
String
ABNORMAL_RULE_OR
=
"或"
;
/**
* 通用配置入口id 谛听标签入库
*/
public
static
final
String
COMMON_MAX_ID
=
"maxId"
;
/**
* 通用配置入口id 普通标签入库
*/
public
static
final
String
COMMON_ID
=
"maxId"
;
/**
* 正常工单缓存key
*/
public
static
final
String
FLOW_CACHE_KEY
=
"flow_cache_key"
;
/**
* 过期工单缓存key
*/
public
static
final
String
OVERDUE_FLOW_CACHE_KEY
=
"overdue_flow_cache_key"
;
/**
* helios cacheName
*/
public
static
final
String
EHC_CACHE_LIST
=
"EHC_CACHE_LIST"
;
public
static
final
String
EHC_CACHE_STRING
=
"EHC_CACHE_STRING"
;
/**
* 正常工单缓存key
*/
public
static
final
String
EHC_FLOW_CACHE_KEY
=
"ehc_flow_cache_key"
;
/**
* 过期工单缓存key
*/
public
static
final
String
EHC_OVERDUE_FLOW_CACHE_KEY
=
"ehc_overdue_flow_cache_key"
;
public
static
final
String
FLOW_ASSIGNED_PROCESSOR_UID
=
"flow_assigned_processor_uid_"
;
public
static
final
String
FLOW_APPROVE_USER
=
"flow_approve_user_"
;
public
static
final
String
AUTO_SUBMIT_FLOW
=
"auto_submit_flow_"
;
public
static
final
String
APPROVER_USER
=
"approver_user_"
;
/**
* 舆情异常创建 退货
*/
public
static
final
String
RETURN
=
"退货"
;
/**
* 舆情异常创建 差评
*/
public
static
final
String
BAD_REVIEW
=
"差评"
;
/**
* redis 商品前缀 itemId 退/换货 时间类型 二级问题
*/
public
static
final
String
RECEIVE_GOODS
=
"goods_%s_%s_%s_%s"
;
/**
* redis 供应商前缀 supplierId 退/换货 时间类型 二级问题
*/
public
static
final
String
RECEIVE_SUPPLIER
=
"goods_%s_%s_%s_%s"
;
/**
* 异常创建信息 商品
*/
public
static
final
String
ABNORMAL_CREATE_FIRST_GOOD
=
"%s-%s在质量%s排行榜发现商品:%s+%s存在质量问题。"
;
public
static
final
String
ABNORMAL_CREATE_SECOND_GOOD
=
"该商品总计%s次数%s pcs,销量%s pcs,质量%s率为%s%%。"
;
public
static
final
String
ABNORMAL_CREATE_THIRD_GOOD
=
"其中当前质量问题:%s,有质量%s%s pcs,该问题质量%s率为%s%%。"
;
public
static
final
String
ABNORMAL_CREATE_FOURTH_GOOD
=
"该商品历史累计%s率为%s%%。"
;
/**
* 异常创建信息 userName
*/
public
static
final
String
ABNORMAL_CREATE_USER_NAME
=
"品控工作台"
;
public
static
final
String
ABNORMAL_CREATE_USER_EMAIL
=
"yanxuan@service.netease.com"
;
public
static
final
String
ABNORMAL_CREATE_PRODUCT_CODE
=
"ecr"
;
public
static
final
String
ABNORMAL_CREATE_PROBLEM_GOODS
=
"%s%s,质量问题:%s"
;
public
static
final
String
ABNORMAL_CREATE_PROBLEM_SUPPLIER
=
"%s%s,质量问题:%s"
;
/**
* 异常创建信息 供应商
*/
public
static
final
String
ABNORMAL_CREATE_FIRST_SUPPLIER
=
"%s-%s在质量%s排行榜发现商品:%s+%s存在质量问题。"
;
public
static
final
String
ABNORMAL_CREATE_SECOND_SUPPLIER
=
"该供应商总计%s次数%s pcs,销量%s pcs,质量%s率为%s%%。"
;
public
static
final
String
ABNORMAL_CREATE_THIRD_SUPPLIER
=
"其中当前质量问题:%s,有质量%s%s pcs,该问题质量%s率为%s%%。"
;
public
static
final
String
ABNORMAL_CREATE_FOURTH_SUPPLIER
=
"该供应商历史累计%s率为%s%%。"
;
/**
* 异常创建信息 数据更新异常
*/
public
static
final
String
ABNORMAL_CREATE_DATA_UPDATE_NOT
=
"数仓数据%s未更新。"
;
public
static
final
String
ABNORMAL_CREATE_DATA
=
"品控ECR舆情监控异常创建,"
;
/**
* 周
*/
public
static
final
String
ABNORMAL_CREATE_WEEKS
=
"周"
;
/**
* 月
*/
public
static
final
String
ABNORMAL_CREATE_MONTH
=
"月"
;
/**
* 节点错误
*/
public
static
final
String
FLOWX_NODE_ERROR
=
"%s节点无法保存或提交"
;
public
static
final
String
SUBMIT_OPERATION
=
"提交工单"
;
public
static
final
String
AUTO_SUBMIT_OPERATION
=
"系统自动提交工单"
;
public
static
final
String
SYSTEM_AUTO_SUBMIT_OPERATION
=
"系统自动提交工单"
;
public
static
final
String
SYSTEM_USERNAME
=
"系统自动提交"
;
/**
* 批量事件任务工单TopoID
*/
public
static
final
String
BATHTOPOID
=
"ehc_batch_event_task_flow"
;
/**
* 批量任务人员类型
*/
public
static
final
String
EXECUTORTYPE
=
"严选人员"
;
/**
* hash map 初始化大小
*/
public
static
final
Integer
INIT_HASH_MAP_SIZE
=
10
;
public
static
final
String
SUPPLIER_PREFIX
=
"YX"
;
/**
* 解决措施工单过期缓存key
*/
public
static
final
String
EHC_TASK_FLOW_OVERDUE_CACHE_KEY
=
"ehc_task_flow_overdue_cache_key"
;
/**
* 解决措施工单正常缓存key
*/
public
static
final
String
EHC_TASK_FLOW_CACHE_KEY
=
"ehc_task_flow_cache_key"
;
/**
* 供应商惩罚工单过期key
*/
public
static
final
String
EHC_PUNISH_FLOW_OVERDUE_CACHE_KEY
=
"ehc_punish_flow_overdue_cache_key"
;
/**
* 供应商惩罚工单正常key
*/
public
static
final
String
EHC_PUNISH_FLOW_CACHE_KEY
=
"ehc_punish_flow_cache_key"
;
/**
* 批量事件工单过期key
*/
public
static
final
String
EHC_EVENT_FLOW_OVERDUE_CACHE_KEY
=
"ehc_event_flow_overdue_cache_key"
;
/**
* 批量事件工单正常key
*/
public
static
final
String
EHC_EVENT_FLOW_CACHE_KEY
=
"ehc_event_flow_cache_key"
;
/**
* 对比参数默认值
*/
public
static
final
Integer
ALL_VALUE
=
-
1
;
// 工单业务数据操作key
public
static
final
String
FLOW_OPERATION_KEY
=
"operation"
;
public
static
final
String
YANXUAN_NOS_PREFIX_URL
=
"yanxuan.nosdn.127.net"
;
/**
* 默认一页数据量
*/
public
static
final
Integer
DEFAULT_PAGE_SIZE
=
10
;
/**
* 默认页码
*/
public
static
final
Integer
DEFAULT_PAGE_NUM
=
1
;
/**
* 异常问题名称最大长度
*/
public
static
final
int
ABNORMAL_NAME_MAX_LENGTH
=
500
;
/**
* 异常问题描述最大长度
*/
public
static
final
int
ABNORMAL_DISCOVER_DESC_MAX_LENGTH
=
800
;
/**
* 审核依据最大长度
*/
public
static
final
int
ABNORMAL_AUDIT_BASIS_MAX_LENGTH
=
50
;
/**
* 审核内容最大长度
*/
public
static
final
int
ABNORMAL_AUDIT_CONTENT_MAX_LENGTH
=
500
;
/**
* 标签最大长度
*/
public
static
final
int
LABEL_MAX_LENGTH
=
2000
;
public
static
final
String
ABNORMAL_PROBLEM_NAME_WAREHOUSE
=
"%s仓库涉及%s单延迟未发货"
;
public
static
final
String
ABNORMAL_PROBLEM_DESCRIPTION_WAREHOUSE
=
"%s仓库涉及%s单延迟未发货"
;
public
static
final
String
ABNORMAL_PROBLEM_NAME_CARRIER
=
"%sB端运输%s件异常商品"
;
public
static
final
String
ABNORMAL_PROBLEM_DESCRIPTION_CARRIER
=
"%s从%s到%s的B端干线运输环节,产生%s件异常商品,仓库以物流原因操作转次"
;
public
static
final
String
ABNORMAL_CREATE_NAME
=
"异常中心"
;
public
static
final
String
ABNORMAL_CREATE_EMAIL
=
"yanxuan@corp.netease.com"
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/DeptIdLevelResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.dto.DeptIdLevelLeaderDTO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
DeptIdLevelResponseResult
{
private
Integer
code
;
private
String
errorMsg
;
private
String
errorCode
;
private
List
<
DeptIdLevelLeaderDTO
>
data
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/EmailEhcFactor.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailEhcFlowEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.Map
;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public
class
EmailEhcFactor
{
/**
* 邮件标题
*/
protected
String
subject
;
/**
* 邮件模版
*/
private
EmailEhcFlowEnum
emailEhcFlowEnum
;
/**
* 邮件模版组装数据对
*/
private
Map
<
String
,
Object
>
data
;
/**
* 邮件类型
*
* @see EmailTypeEnum
*/
private
String
type
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/EmailFactor.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.Map
;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public
class
EmailFactor
{
private
static
final
String
SUBJECT_PREFIX
=
"【品控工作台】"
;
protected
String
subject
;
/**
* 邮件模版
*/
private
EmailTemplateEnum
emailTemplateEnum
;
/**
* 邮件模版组装数据对
*/
private
Map
<
String
,
Object
>
data
;
/**
* 邮件类型
*/
private
String
type
;
public
String
getSubject
()
{
String
subject
=
emailTemplateEnum
.
getSubject
();
if
(
StringUtils
.
isNotBlank
(
subject
)){
return
subject
;
}
/*if (data != null) {
Object flowId = data.get(EmailParamEnum.FLOW_ID.getKey());
Object taskType = data.get(EmailParamEnum.TASK_TYPE.getKey());
String format = emailTemplateEnum.getSubject();
if(flowId != null && taskType == null){
return String.format(format, flowId);
}else if(flowId != null && taskType != null){
return String.format(format, taskType, flowId);
}else {
return SUBJECT_PREFIX;
}
}*/
return
SUBJECT_PREFIX
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/EmailTemplateResponResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
@Data
public
class
EmailTemplateResponResult
{
/**
* ResponseCode,状态码
*/
private
Integer
code
;
/**
* 错误说明
*/
private
String
errorMessage
;
/**
* 组装结果
*/
private
String
data
;
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/EmailTemplateRpcResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.change.integration.email.conig.RpcTemplate
;
import
com.netease.mail.yanxuan.change.common.bean.ResponseCode
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcException
;
import
java.io.IOException
;
public
class
EmailTemplateRpcResult
<
T
>
implements
RpcTemplate
.
CallHandler
<
T
>
{
private
static
final
String
CODE
=
"code"
;
private
static
final
String
RESULT
=
"data"
;
private
static
final
String
MESSAGE
=
"errorMessage"
;
private
Class
<
T
>
tClass
;
public
EmailTemplateRpcResult
(
Class
<
T
>
tClass
){
this
.
tClass
=
tClass
;
}
@Override
public
T
handle
(
String
resp
)
throws
IOException
{
JSONObject
rpcResult
=
JSON
.
parseObject
(
resp
);
EmailTemplateResponResult
responResult
=
new
EmailTemplateResponResult
();
int
code
=
rpcResult
.
getIntValue
(
CODE
);
if
(
code
==
ResponseCode
.
SUCCESS
.
getCode
()){
String
data
=
rpcResult
.
getString
(
RESULT
);
responResult
.
setData
(
data
);
return
(
T
)
responResult
;
}
String
errorMessage
=
rpcResult
.
getString
(
MESSAGE
);
throw
new
RpcException
(
"email template response error, code : "
+
code
+
" , errorMessage : "
+
errorMessage
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/FlowEhcOverTimeEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
FlowEhcOverTimeEmailModel
{
/**
* 主工单
*/
private
List
<
OverTimeUserVo
>
abnormalEhcEmailModels
;
/**
* 子工单
*/
private
List
<
TaskEhcFlowOverTimeEmailModel
>
taskEhcFlowOverTimeEmailModels
;
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/IusRpcResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.change.integration.email.conig.RpcTemplate
;
import
com.netease.mail.yanxuan.change.common.bean.ResponseCode
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcException
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserInfoDTO
;
import
java.io.IOException
;
public
class
IusRpcResult
<
T
>
implements
RpcTemplate
.
CallHandler
<
T
>
{
private
static
final
String
CODE
=
"code"
;
private
static
final
String
RESULT
=
"data"
;
private
static
final
String
ERROR_CODE
=
"errorCode"
;
private
static
final
String
ERROR_MESSAGE
=
"errorMsg"
;
private
Class
<
T
>
tClass
;
public
IusRpcResult
(
Class
<
T
>
tClass
)
{
this
.
tClass
=
tClass
;
}
@Override
public
T
handle
(
String
resp
)
throws
IOException
{
JSONObject
rpcResult
=
JSON
.
parseObject
(
resp
);
ResponseResult
responResult
=
new
ResponseResult
();
int
code
=
rpcResult
.
getIntValue
(
CODE
);
if
(
code
==
ResponseCode
.
SUCCESS
.
getCode
())
{
String
data
=
rpcResult
.
getString
(
RESULT
);
UserInfoDTO
jsonObject
=
JSON
.
parseObject
(
data
,
UserInfoDTO
.
class
);
responResult
.
setData
(
jsonObject
);
return
(
T
)
responResult
;
}
String
errorMessage
=
rpcResult
.
getString
(
ERROR_MESSAGE
);
Integer
errorCode
=
rpcResult
.
getInteger
(
ERROR_CODE
);
throw
new
RpcException
(
"ius response error, resp="
+
JSON
.
toJSONString
(
resp
)
+
" , errorCode : "
+
errorCode
+
" , errorMessage : "
+
errorMessage
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/JumpLinkModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
@Data
public
class
JumpLinkModel
{
/**
* 产品号
*/
private
String
productCode
;
/**
* 跳转链接
*/
private
String
url
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/OverTimeFlowVo.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Builder
public
class
OverTimeFlowVo
{
/**
* 用户邮箱
*/
private
String
uid
;
/**
* 工单列表
*/
private
List
<
OverTimeUserVo
>
flowIdList
;
@Override
protected
Object
clone
()
throws
CloneNotSupportedException
{
OverTimeFlowVo
vo
=
(
OverTimeFlowVo
)
super
.
clone
();
vo
.
setUid
(
vo
.
getUid
());
vo
.
setFlowIdList
(
BaseConvertor
.
convert
(
vo
.
getFlowIdList
(),
OverTimeUserVo
.
class
));
return
vo
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/OverTimeUserVo.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
OverTimeUserVo
{
/**
* 接收人邮箱
*/
private
String
uid
;
/**
* 接收人名字
*/
private
String
uname
;
/**
* 工单id
*/
private
String
flowId
;
/**
* 异常问题名称
*/
private
String
abnormalName
;
/**
* 1:主工单,2:临时措施,3:供应商惩罚,4:批量事件
*
* @see com.netease.mail.yanxuan.ehc.core.meta.enums.FlowCheckTypeEnum
*/
private
Integer
type
;
/**
* 当前节点
*/
private
String
currentNode
;
/**
* 当前节点名称
*/
private
String
currentNodeName
;
/**
* 异常负责人
*/
private
String
abnormalPrincipalUserName
;
/**
* 执行人
*/
private
String
processUserName
;
/**
* 异常问题类型
*/
private
Long
problemTypeId
;
/**
* 异常问题类型名称
*/
private
String
problemTypeName
;
/**
* 对应的监控规则(异常问题工单)
*
* @see com.netease.mail.yanxuan.ehc.core.meta.enums.MonitoringRulesEnum
*/
private
String
monitoringRule
;
/**
* 剩余/延期天数(如果延期展示负数)
*/
private
Long
surplusDays
;
/**
* 时间状态
*
* @see com.netease.mail.yanxuan.ehc.core.meta.enums.EmailTimeStatusEnum
*/
private
Integer
timeStatus
;
/**
* 时间状态
*/
private
String
timeStatusName
;
/**
* 创建时间
*/
private
String
createTime
;
/**
* 截止时间
*/
private
String
deadLineTime
;
/**
* 工单跳转链接
*/
private
String
flowUrl
;
/**
* 部门名称
*/
private
String
execUserOrgPosName
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/Pagination.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public
class
Pagination
implements
Serializable
{
/**
* 当前⻚,从1开始
*/
private
Integer
page
;
/**
* ⻚⼤⼩
*/
private
Integer
size
;
/**
* 总⻚数
*/
private
Integer
totalPage
;
/**
* 结果总数
*/
private
Integer
total
;
public
Pagination
(
Integer
page
,
Integer
size
)
{
this
.
page
=
page
;
this
.
size
=
size
;
this
.
total
=
0
;
this
.
totalPage
=
0
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/ProblemConfigureModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.qc.service.client.meta.abnormal.LabelModel
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ProblemConfigureModel
{
/**
* 问题类型配置表id
*/
private
Long
problemTypeId
;
/**
* 异常环节
*/
private
List
<
LabelModel
>
abnormalLinks
;
/**
* 问题分类
*/
private
List
<
LabelModel
>
flowProblems
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/QueryUserInfoResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserInfoDTO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
QueryUserInfoResponseResult
{
private
Integer
code
;
private
String
errorMsg
;
private
String
errorCode
;
private
List
<
UserInfoDTO
>
data
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/QueryUserInfoVO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
QueryUserInfoVO
{
/**
* uid
*/
private
List
<
String
>
uids
;
/**
* 物流单号
*/
private
Boolean
locked
;
/**
* 创建时间区间
*/
private
Long
startCreateTime
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/ResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
@Data
public
class
ResponseResult
{
private
Integer
code
;
private
Integer
errorCode
;
private
Object
data
;
private
String
errorMsg
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/RoleResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.yanxuan.flowx.sdk.meta.dto.base.UserBaseDTO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
RoleResponseResult
{
private
Integer
code
;
private
Integer
errorCode
;
private
List
<
UserBaseDTO
>
data
;
private
String
errorMsg
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/RpcObjectHandler.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.alibaba.fastjson.JSON
;
import
com.netease.mail.yanxuan.change.integration.email.conig.RpcTemplate
;
import
java.io.IOException
;
/**
* 直接序列化返回对象
*
* @author lwtang
* @date 2019-02-20
*/
public
class
RpcObjectHandler
<
T
>
implements
RpcTemplate
.
CallHandler
<
T
>
{
private
Class
<
T
>
tClass
;
public
RpcObjectHandler
(
Class
<
T
>
tClass
)
{
this
.
tClass
=
tClass
;}
@Override
public
T
handle
(
String
resp
)
throws
IOException
{
return
JSON
.
parseObject
(
resp
,
tClass
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/SearchResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
SearchResult
<
T
>
{
private
Pagination
pagination
;
private
List
<
T
>
result
;
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/SupplierEmailResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
@Data
public
class
SupplierEmailResponseResult
{
private
Integer
code
;
private
String
desc
;
private
Object
data
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/SupplierEmailSendReq.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.Data
;
@Data
public
class
SupplierEmailSendReq
{
/**
* 供应商id
*/
private
String
supplierId
;
/**
* 标题
*/
private
String
mailSubject
;
/**
* 内容
*/
private
String
mailContent
;
private
Integer
isAllAccountResolved
=
1
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/TaskEhcFlowOverTimeEmailModel.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
TaskEhcFlowOverTimeEmailModel
{
private
String
taskFlowId
;
private
String
url
;
private
String
abnormalName
;
/**
* @see com.netease.mail.yanxuan.ehc.core.meta.enums.AllTaskFlowTypeEnum
*/
private
String
taskFlowType
;
private
String
uid
;
private
String
uname
;
/**
* 待处理人
*/
private
String
processUserName
;
/**
* @see com.netease.mail.yanxuan.ehc.core.meta.enums.EmailTimeStatusEnum
*/
private
String
timeStatusName
;
private
String
createTime
;
private
String
expectedFinishTime
;
private
Long
delayDay
;
/**
* 部门
*/
private
String
execUserOrgPosName
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/UserUniteOrgMetaResponseResult.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserUniteOrgMetaDTO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
UserUniteOrgMetaResponseResult
{
private
Integer
code
;
private
String
errorMsg
;
private
String
errorCode
;
private
List
<
UserUniteOrgMetaDTO
>
data
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/email/UserVO.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
email
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
UserVO
{
/**
* 用户名
*/
private
String
userName
;
/**
* 用户邮箱
*/
private
String
userEmail
;
/**
* 用户部门
*/
private
Long
orgId
;
/**
用户部门名称
*/
private
String
orgName
;
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/AllTaskFlowTypeEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.springframework.util.CollectionUtils
;
public
enum
AllTaskFlowTypeEnum
{
/**
* 临时措施
*/
TEMPORARY_MEASURE
(
1
,
"临时措施"
),
/**
* 纠正措施
*/
CORRECT_MEASURE
(
2
,
"纠正措施"
),
/**
* 验证结果
*/
VERIFY_RESULT
(
3
,
"验证结果"
),
/**
* 供应商惩罚措施工单
*/
SUPPLIER_PUNISHMENT
(
4
,
"供应商惩罚措施"
),
/**
* 批量事件工单
*/
BATCH_EVENT
(
5
,
"批量事件"
);
private
Integer
type
;
private
String
name
;
AllTaskFlowTypeEnum
(
Integer
type
,
String
name
)
{
this
.
type
=
type
;
this
.
name
=
name
;
}
public
static
String
getName
(
Integer
type
)
{
List
<
AllTaskFlowTypeEnum
>
list
=
Arrays
.
stream
(
AllTaskFlowTypeEnum
.
values
())
.
filter
(
e
->
e
.
getType
().
equals
(
type
)).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
return
list
.
get
(
0
).
getName
();
}
return
""
;
}
public
Integer
getType
()
{
return
type
;
}
public
String
getName
()
{
return
name
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailEhcFlowEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
EmailEhcFlowEnum
{
/**
* 异常任务工单邮件
*/
YX_EHC_CREATE_TASK_SUBMIT
(
"ehc_create_task_submit"
,
"创建临时/纠正措施/验证任务_提交"
,
"【待处理】异常处理-%s 任务:%s 任务工单ID:%s"
,
"你好,由%s 发起的异常问题任务工单:%s ,工单ID:%s,请尽快前往处理"
),
YX_EHC_CREATE_TASK_CANCEL
(
"ehc_create_task_cancel"
,
"创建临时/纠正措施/验证任务_取消"
,
"【已取消】异常处理-%s 任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的异常问题任务工单:%s ,工单ID:%s ,已被 %s %s 操作取消,请前往查看详情"
),
YX_EHC_PROCESS_RESULT_CARE_OF
(
"ehc_process_result_care_of"
,
"填写任务处理结果_转交"
,
"【待处理】异常处理-%s 任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的异常问题任务工单:%s,工单ID:XXX,现由 %s %s 转交给你,请尽快前往处理"
),
YX_EHC_PROCESS_RESULT_SUBMIT
(
"ehc_process_result_submit"
,
"填写任务处理结果_提交"
,
"【待审批】异常处理-%s 任务:%s 任务工单ID:%s"
,
"你好,由%s 发起的异常问题任务工单:%s ,工单ID:XXX,由 %s %s 完成了问题处理,需要审批,请尽快前往处理"
),
YX_EHC_TASK_RELEASE_CARE_OF
(
"ehc_task_release_care_of"
,
"任务工单发起人审批_转交"
,
"【待审批】异常处理-%s 任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的异常问题任务工单:%s,工单ID:XXX,由 %s %s 完成了问题处理,需要审批,现由 %s %s 转交给你,请尽快前往处理"
),
YX_EHC_TASK_RELEASE_CHECK_NOT_PASS
(
"ehc_task_release_check_not_pass"
,
"任务工单发起人审批_不通过"
,
"【被驳回】异常处理-%s 任务:%s 任务工单ID:%s"
,
"你好,由%s 发起的异常问题任务工单:%s,工单ID:%s,被 %s %s 驳回,请尽快前往处理"
),
/**
* 供应商惩罚工单邮件
*/
YX_EHC_CREATE_SUPPLIER_TASK_SUBMIT
(
"ehc_create_supplier_task_submit"
,
"创建供应商惩罚任务_提交"
,
"【待处理】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,请尽快前往处理"
),
YX_EHC_CREATE_SUPPLIER_TASK_CARE_OF
(
"ehc_create_supplier_task_care_of"
,
"创建供应商惩罚任务_转交"
,
"【待处理】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,现由(%s %s)转交给你,请尽快前往处理"
),
YX_EHC_SUPPLIER_RESULT_SUBMIT
(
"ehc_supplier_process_result_submit"
,
"采购回填供应商处理结果_提交"
,
"【待审批】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,由(%s %s)完成了问题处理,需要审批,请尽快前往处理"
),
YX_EHC_SUPPLIER_RELEASE_CHECK_CARE_OF
(
"ehc_supplier_release_check_care_of"
,
"工单发起人审批节点_转交"
,
"【待审批】异常处理-供应商惩罚任务:%s 任务工单ID:%s"
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,由(%s %s)完成了问题处理,需要审批,现由(%s %s)转交给你,请尽快前往处理"
),
YX_EHC_SUPPLIER_RELEASE_CHECK_PASS_OVER
(
"ehc_supplier_release_check_pass_over"
,
"工单发起人审批节点_审核通过"
,
"【已完结】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,已完成处理,请前往查看详情"
),
YX_EHC_SUPPLIER_RELEASE_CHECK_NOT_PASS_BUY
(
"ehc_supplier_release_check_not_pass_buy"
,
"工单发起人审批节点_审核不通过"
,
"【被驳回】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s,工单ID:%s,被(%s %s)驳回,请尽快前往处理"
),
YX_EHC_CREATE_SUPPLIER_CANCEL
(
"ehc_create_supplier_cancel"
,
"创建供应商惩罚任务_取消"
,
"【已取消】异常处理-供应商惩罚任务:%s 任务工单ID:%s "
,
"你好,由%s 发起的供应商惩罚任务工单:%s ,工单ID:%s ,已被 %s %s 操作取消,请前往查看详情"
),
/**
* 批量事件工单邮件
*/
YX_EHC_CREATE_EVENT_TASK_SUBMIT
(
"ehc_create_event_task_submit"
,
"创建批量事件任务_提交"
,
"【待处理】异常处理-批量事件记录任务:%s 任务工单ID:%s "
,
""
),
YX_EHC_CREATE_EVENT_TASK_DELIVER
(
"ehc_create_event_task_deliver"
,
"处理批量事件任务_转交"
,
"【待处理】异常处理-批量事件记录任务:%s 任务工单ID:%s "
,
""
),
YX_EHC_CREATE_EVENT_TASK_CANCEL
(
"ehc_create_event_task_cancel"
,
"创建批量事件任务_取消"
,
"【已取消】异常处理-批量事件记录任务:%s 任务工单ID:%s"
,
""
),
/**
* 临期/过期工单邮件
*/
YX_EHC_FLOW_OVER_TIME
(
"ehc_flow_over_time"
,
"临期/过期工单监控"
,
"ECR异常临期及延期任务工单提醒"
,
""
),
/********************************** 异常问题主工单邮件模板 **********************************/
YX_EHC_ABNORMAL_PROCESS
(
"ehc_abnormal_process_template"
,
"待处理人处理邮件(非驳回)"
,
"【待处理】异常问题:%s 工单ID:%s"
,
""
),
YX_EHC_ABNORMAL_AUDIT
(
"ehc_abnormal_audit_template"
,
"待审核人审核邮件"
,
"【待审批】异常问题:%s 工单ID:%s"
,
""
),
YX_EHC_ABNORMAL_DELIVER_PROCESS
(
"ehc_abnormal_deliver_process_template"
,
"待转交人处理邮件"
,
"【待处理】异常问题:%s 工单ID:%s"
,
""
),
YX_EHC_ABNORMAL_DELIVER_AUDIT
(
"ehc_abnormal_deliver_audit_template"
,
"待转交人审核邮件"
,
"【待审批】异常问题:%s 工单ID:%s"
,
""
),
YX_EHC_ABNORMAL_REFUSE
(
"ehc_abnormal_refuse_template"
,
"被驳回待处理邮件"
,
"【被驳回】异常问题:%s 工单ID:%s"
,
""
),
YX_EHC_ABNORMAL_END
(
"ehc_abnormal_end_template"
,
"已完结通知邮件"
,
"【已完结】异常问题:%s 工单ID:%s"
,
""
),
;
/**
* 模版code
*/
private
String
code
;
/**
* 模版名称
*/
private
String
name
;
/**
* 邮件标题format
*/
private
String
subject
;
/**
* 邮件内容
*/
private
String
content
;
EmailEhcFlowEnum
(
String
code
,
String
name
,
String
subject
,
String
content
)
{
this
.
code
=
code
;
this
.
name
=
name
;
this
.
subject
=
subject
;
this
.
content
=
content
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
public
String
getSubject
()
{
return
subject
;
}
public
String
getContent
()
{
return
content
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailParamEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
EmailParamEnum
{
FLOW_ID
(
"flowId"
,
"工单ID"
),
RELEASE_ID
(
"releaseId"
,
"发起人账号"
),
RELEASE_NAME
(
"releaseName"
,
"发起人姓名"
),
RELEASE_RMAIL
(
"releaseEmail"
,
"发起人邮箱"
),
ABNORMAL_TITLE
(
"abnormalTitle"
,
"异常标题"
),
FLOW_LINK
(
"flowLink"
,
"工单链接"
),
CARE_OF_NAME
(
"careOfName"
,
"转交人姓名"
),
CARE_OF_EMAIL
(
"careOfEmail"
,
"转交人邮箱"
),
ABNORMAL_DUTY_NAME
(
"abnormalDutyName"
,
"异常责任人姓名"
),
ABNORMAL_DUTY_EMAIL
(
"abnormalDutyEmail"
,
"异常责任人邮箱"
),
GROUP_LEADER_NAME
(
"groupLeaderName"
,
"组长姓名"
),
GROUP_LEADER_EMAIL
(
"groupLeaderEmail"
,
"组长邮箱"
),
ABNORMAL_CHECK_NAME
(
"abnormalCheckName"
,
"异常审批人姓名"
),
ABNORMAL_CHECK_EMAIL
(
"abnormalCheckEmail"
,
"异常审批人邮箱"
),
REJECT_NAME
(
"rejectName"
,
"驳回人姓名"
),
REJECT_EMAIL
(
"rejectEmail"
,
"驳回人邮箱"
),
TASK_TYPE
(
"taskType"
,
"异常任务类型"
),
TASK_PROCESS_NAME
(
"taskProcessName"
,
"任务处理人姓名"
),
TASK_PROCESS_EMAIL
(
"taskProcessEmail"
,
"任务处理人邮箱"
),
CHECK_NAME
(
"checkName"
,
"审批人姓名"
),
CHECK_EMAIL
(
"checkEmail"
,
"审批人邮箱"
),
NAME
(
"name"
,
"姓名"
),
FIND_TIME
(
"findTime"
,
"发现时间"
),
//yyyy-MM-dd HH:mm:ss
FIND_DES
(
"findDes"
,
"发现人描述"
),
SERVICE_CODE
(
"serviceCode"
,
"服务平台"
),
ABNORMAL_FLOW_TYPE
(
"abnormalFlowType"
,
"异常种类"
),
CREATE_TIME
(
"createTime"
,
"异常创建时间"
),
ABNORMAL_TASK_DES
(
"abnormalTaskDes"
,
"任务描述"
),
BREACH_OF_CONTRACT_TYPE
(
"breachOfContractType"
,
"违约类型"
),
RESPONSIBILITY
(
"responsibility"
,
"责任判定"
),
/**
* 查询数仓
*/
QUERY_PART
(
"queryPart"
,
"查询部分"
),
/**
* 监控过期或临期工单
*/
TITLE
(
"title"
,
"提示文案"
),
ABNORMAL_PROBLEM_FLOW_LIST_DEC
(
"abnormalProblemFlowListDec"
,
"判定异常等级制定临时措施临期延期提醒"
),
ABNORMAL_PROBLEM_FLOW_LIST_CAU
(
"abnormalProblemFlowListCau"
,
"原因分析和纠正措施、标准化和验证措施临期延期提醒"
),
ABNORMAL_PROBLEM_FLOW_LIST
(
"abnormalProblemFlowList"
,
"异常工单临期延期提醒"
),
ABNORMAL_TASK_FLOW_LIST
(
"abnormalTaskFlowList"
,
"任务工单临期延期提"
),
TEST
(
"test"
,
"测试"
);
private
String
key
;
private
String
info
;
EmailParamEnum
(
String
key
,
String
info
){
this
.
key
=
key
;
this
.
info
=
info
;
}
public
String
getKey
()
{
return
key
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailTemplateEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
EmailTemplateEnum
{
/**
* 异常问题跟进工单邮件
*/
YX_QC_RELEASE_FLOW
(
"yxqc_release_flow"
,
"品控发起工单"
,
"【ECR异常工单新建】 %s,请判定异常等级和制定临时措施"
),
YXQC_RELEASE_FLOW_KONW_PE
(
"yxqc_release_flow_know_pe"
,
"品控发起工单_被周知人"
,
"【ECR异常工单新建】 %s,请知悉"
),
YX_QC_DECIDE_CARE_OF
(
"yxqc_decide_care_of"
,
"品控判定异常等级制定临时措施_转交"
,
"【ECR异常工单跟进】 %s,请判定异常等级和制定临时措施"
),
YX_QC_DECIDE_SUBMIT
(
"yxqc_decide_submit"
,
"品控判定异常等级制定临时措施_提交"
,
"【ECR异常工单审批】 %s,请审批异常等级和临时措施"
),
YX_QC_GROUP_LEADER_CHECK_CARE_OF
(
"yxqc_group_leader_check_care_of"
,
"组长审批_转交"
,
"【ECR异常工单审批】 %s,请审批异常等级和临时措施"
),
YX_QC_GROUP_LEADER_CHECK_PASS_NOT_ABNORMAL
(
"yxqc_group_leader_check_pass_not_abnormal"
,
"组长审批_审批通过_异常审批人审批关联工单/非异常问题"
,
"【ECR异常工单审批】 %s,请审批异常等级和临时措施"
),
YX_QC_GROUP_LEADER_CHECK_PASS_METHOD
(
"yxqc_group_leader_check_pass_method"
,
"组长审批_审批通过_原因分析和纠正措施、标准化和验证措施"
,
"【ECR异常工单跟进】 %s,请分析原因和制定纠正措施"
),
YX_QC_GROUP_LEADER_NOT_PASS
(
"yxqc_group_leader_not_pass"
,
"组长审批_不通过_判定异常等级制定临时措施"
,
"【ECR异常工单驳回请跟进】 %s,请判定异常等级和制定临时措施"
),
YX_QC_ABNORMAL_NOT_PROBLEM_CARE_OF
(
"yxqc_abnormal_not_problem_care_of"
,
"品控_异常审批人审批关联工单/非异常问题_转交"
,
"【ECR异常工单审批】 %s,请审批异常等级和临时措施"
),
YX_QC_ABNORMAL_NOT_PROBLEM_OVER
(
"yxqc_abnormal_not_problem_over"
,
"品控_异常审批人审批关联工单/非异常问题_完结"
,
"【ECR异常工单完结】 %s,请知悉"
),
YX_QC_ABNORMAL_NOT_PROBLEM_NOT_PASS
(
"yxqc_abnormal_not_problem_not_pass"
,
"品控_异常审批人审批关联工单/非异常问题_不通过"
,
"【ECR异常工单驳回请跟进】 %s,请判定等级和制定临时措施"
),
YX_QC_CAUSE_MEASURE_CARE_OF
(
"yxqc_cause_measure_care_of"
,
"品控_原因分析和纠正措施、标准化和验证措施_转交"
,
"【ECR异常工单跟进】 %s,请分析原因和制定纠正措施"
),
YX_QC_CAUSE_MEASURE_SUBMIT
(
"yxqc_cause_measure_submit"
,
"品控_原因分析和纠正措施、标准化和验证措施_提交"
,
"【ECR异常工单审批】 %s,请审批原因分析和纠正措施"
),
YX_QC_ABNORMAL_CHECK_METHOD_CARE_OF
(
"yxqc_abnormal_check_method_care_of"
,
"品控_异常审批人审核异常处理方式_转交"
,
"【ECR异常工单审批】 %s,请审批原因分析和纠正措施"
),
YX_QC_ABNORMAL_CHECK_METHOD_PASS
(
"yxqc_abnormal_check_method_pass"
,
"品控_异常审批人审核异常处理方式_审批通过"
,
"【ECR异常工单跟进】 %s,请确认全部任务完成"
),
YX_QC_ABNORMAL_CHECK_METHOD_NOT_PASS
(
"yxqc_abnormal_check_method_not_pass"
,
"品控_异常审批人审核异常处理方式_审批不通过"
,
"【ECR异常工单驳回请跟进】 %s,请分析原因和制定纠正措施"
),
YX_QC_ABNORMAL_CHECK_METHOD_NOT_PASS_DECIDE
(
"yxqc_abnormal_check_method_not_pass_decide"
,
"品控_异常审批人审核异常处理方式_审批不通过_判定异常等级制定临时措施"
,
"【ECR异常工单驳回请跟进】 %s,请判定异常等级和制定临时措施"
),
YX_QC_CONFIRM_METHOD_OVER_SUBMIT
(
"yxqc_confirm_method_over_submit"
,
"品控_确认临时措施和纠正措施任务全部完成_提交"
,
"【ECR异常工单审批】 %s,请审批所有任务处理结果"
),
YX_QC_ABNORMAL_CHECK_RESULT_NOT_PASS_CONFIRM_METHOD_OVER
(
"yxqc_abnormal_check_result_not_pass_confirm_method_over"
,
"品控_异常审批人审核异常处理结果_审批不通过_确认临时措施和纠正措施任务全部完成"
,
"【ECR异常工单驳回请跟进】 %s,请完成全部任务"
),
YX_QC_ABNORMAL_CHECK_RESULT_NOT_PASS_CAUSE_METHOD
(
"yxqc_abnormal_check_result_not_pass_cause_method"
,
"品控_异常审批人审核异常处理结果_审批不通过_原因分析和纠正措施、标准化和验证措施"
,
"【ECR异常工单驳回请跟进】 %s,请分析原因和制定纠正措施"
),
YX_QC_ABNORMAL_CHECK_RESULT_NOT_PASS_DECIDE
(
"yxqc_abnormal_check_result_not_pass_decide"
,
"品控_异常审批人审核异常处理结果_审批不通过_判定异常等级制定临时措施"
,
"【ECR异常工单驳回请跟进】 %s,请判定异常等级和制定临时措施"
),
YX_QC_ABNORMAL_CHECK_RESULT_PASS_OVER
(
"yxqc_abnormal_check_result_pass_over"
,
"品控_异常审批人审核异常处理结果_审批通过_完结"
,
"【ECR异常工单完结】 %s,请知悉"
),
YX_QC_ABNORMAL_CHECK_RESULT_PASS_BIGGER_CHECK
(
"yxqc_abnormal_check_result_pass_bigger_check"
,
"品控_异常审批人审核异常处理结果_审批通过_项目部老大&品控负责人审批"
,
"【ECR异常工单审批】 %s,请审批"
),
YX_QC_BIGGER_CHECK_CARE_OF_BIGGER_CHECK
(
"yxqc_bigger_check_care_of_bigger_check"
,
"品控_项目部老大&品控负责人审批节点_转交_项目部老大&品控负责人审批节点"
,
"【ECR异常工单审批】 %s,请审批"
),
YX_QC_BIGGER_CHECK_PASS_OVER
(
"yxqc_bigger_check_pass_over"
,
"品控_项目部老大&品控负责人审批节点_审核通过_完结"
,
"【ECR异常工单完结】 %s,请知悉"
),
YX_QC_BIGGER_CHECK_NOT_PASS
(
"yxqc_bigger_check_not_pass"
,
"品控_项目部老大&品控负责人审批节点_审核不通过"
,
"【ECR异常工单驳回请跟进】 %s,请判定异常等级和制定临时措施"
),
/**
* 异常任务工单邮件
*/
YX_QC_CREATE_TASK_SUBMIT
(
"yxqc_create_task_submit"
,
"品控_创建临时/纠正措施/验证任务_提交"
,
"【ECR任务工单新建】%s,请跟进%s任务"
),
YX_QC_CREATE_TASK_REVOKE
(
"yxqc_create_task_revoke"
,
"品控_创建临时/纠正措施/验证任务_撤回"
,
"【ECR任务工单撤回】%s,请知悉"
),
YX_QC_PROCESS_RESULT_CARE_OF
(
"yxqc_process_result_care_of"
,
"品控_填写任务处理结果_转交"
,
"【ECR任务工单跟进】%s,请跟进%s任务"
),
YX_QC_PROCESS_RESULT_SUBMIT
(
"yxqc_process_result_submit"
,
"品控_填写任务处理结果_提交"
,
"【ECR任务工单审批】%s,请审批%s任务"
),
YX_QC_TASK_RELEASE_CARE_OF
(
"yxqc_task_release_care_of"
,
"品控_任务工单发起人审批_转交"
,
"【ECR任务工单审批】%s,请审批%s任务"
),
YX_QC_TASK_RELEASE_CHECK_PASS
(
"yxqc_task_release_check_pass"
,
"品控_任务工单发起人审批_通过"
,
"【ECR任务工单完结】%s,请知悉"
),
YX_QC_TASK_RELEASE_CHECK_NOT_PASS
(
"yxqc_task_release_check_not_pass"
,
"品控_任务工单发起人审批_不通过"
,
"【ECR任务工单驳回请跟进】%s,请跟进%s任务"
),
/**
* 异常问题供应商惩罚任务工单
*/
YX_QC_CREATE_SUPPLIER_TASK_SUBMIT
(
"yxqc_create_supplier_task_submit"
,
"品控_创建供应商惩罚任务_提交"
,
"【ECR任务工单新建】%s,请跟进供应商惩罚工单"
),
YX_QC_CREATE_SUPPLIER_TASK_CARE_OF
(
"yxqc_create_supplier_task_care_of"
,
"品控_创建供应商惩罚任务_转交"
,
"【ECR任务工单跟进】%s,请跟进供应商惩罚工单"
),
YX_QC_SUPPLITER_RESULT_SUBMIT
(
"yxqc_supplier_process_result_submit"
,
"品控_采购回填供应商处理结果_提交"
,
"【ECR任务工单审批】%s,请审批供应商惩罚工单"
),
YX_QC_TASK_RELEASE_CHECK_CARE_OF
(
"yxqc_task_release_check_care_of"
,
"品控_工单发起人审批节点_转交"
,
"【ECR任务工单审批】%s,请审批供应商惩罚工单"
),
YX_QC_TASK_RELEASE_CHECK_PASS_OVER
(
"yxqc_task_release_check_pass_over"
,
"品控_工单发起人审批节点_审核通过"
,
"【ECR任务工单完结】%s,请知悉"
),
YX_QC_TASK_RELEASE_CHECK_NOT_PASS_BUY
(
"yxqc_task_release_check_not_pass_buy"
,
"品控_工单发起人审批节点_审核不通过"
,
"【ECR任务工单驳回请跟进】%s,请跟进供应商惩罚工单"
),
/**
* 查询数仓相关
*/
YX_QC_TASK_QUERY_DPS_NOT_DATA
(
"yx_qc_query_dqs_not_data"
,
"品控_查询_数仓_无数据"
,
""
),
/**
* 监控过期或临期工单
*/
YX_QC_CONTROL_EXPIRE_ADVENT_FLOW
(
"yx_qc_control_expire_advent_flow"
,
"品控_监控_过期临期_工单"
,
"【ECR异常、任务工单】临期、延期提醒"
),
YX_QC_TEST
(
"yxqc_test"
,
"品控测试"
,
""
);
/**
* 模版code
*/
private
String
code
;
/**
* 模版名称
*/
private
String
name
;
/**
* 邮件标题format
*/
private
String
subject
;
EmailTemplateEnum
(
String
code
,
String
name
,
String
subject
){
this
.
code
=
code
;
this
.
name
=
name
;
this
.
subject
=
subject
;
}
public
String
getCode
(){
return
code
;
}
public
String
getSubject
(){
return
subject
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailType.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
EmailType
{
NULL
(
""
),
//NULL
RPC
(
"RPC"
),
//RPC请求
HTTP
(
"HTTP"
),
//HTTP请求
CACHE
(
"CACHE"
),
//缓存问题
DB
(
"DB"
),
//DB问题
MQ
(
"MQ"
),
//消息队列问题
PARAM
(
"PARAM"
),
//入参问题
SERVICE
(
"SERVICE"
),
//业务逻辑问题
EXT_DEPENDENCY
(
"EXT_DEPENDENCY"
);
//外部依赖问题
private
String
value
;
private
EmailType
(
String
value
)
{
this
.
value
=
value
;
}
public
String
getValue
()
{
return
this
.
value
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/EmailTypeEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
EmailTypeEnum
{
TEXT
(
"text"
),
HTML
(
"html"
);
private
String
type
;
EmailTypeEnum
(
String
type
){
this
.
type
=
type
;
}
public
String
getType
(){
return
this
.
type
;
}
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/ExecUserTypeEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
import
lombok.AllArgsConstructor
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
org.springframework.util.CollectionUtils
;
@AllArgsConstructor
public
enum
ExecUserTypeEnum
{
YANXUAN_MEMBER
(
1
,
"严选人员"
),
SUPPLIER
(
2
,
"供应商"
),
LOGISTICS_SERVICE_PROVIDER
(
3
,
"物流服务商"
),
WAREHOUSE_SERVICE_PROVIDER
(
4
,
"仓库服务商"
),
RETURN_WAREHOUSE_SERVICE_PROVIDER
(
5
,
"退货仓服务商"
);
private
int
value
;
private
String
name
;
public
static
String
getName
(
Integer
type
)
{
List
<
ExecUserTypeEnum
>
collect
=
Arrays
.
stream
(
ExecUserTypeEnum
.
values
())
.
filter
(
e
->
e
.
getValue
().
equals
(
type
)).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
collect
))
{
return
collect
.
get
(
0
).
getName
();
}
return
""
;
}
public
String
getName
()
{
return
name
;
}
public
Integer
getValue
()
{
return
value
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/OrgUserTypeEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
public
enum
OrgUserTypeEnum
{
STAFF
(
0
,
"普通员工"
),
INSTRUCTOR
(
1
,
"指导员"
),
PRINCIPAL
(
2
,
"负责人"
);
/**
* 属性值
*/
private
int
value
;
/**
* 属性名称
*/
private
String
name
;
public
static
OrgUserTypeEnum
getByValue
(
int
result
)
{
for
(
OrgUserTypeEnum
w:
OrgUserTypeEnum
.
values
())
{
if
(
w
.
getValue
()
==
result
)
{
return
w
;
}
}
return
null
;
}
OrgUserTypeEnum
(
int
value
,
String
name
)
{
this
.
value
=
value
;
this
.
name
=
name
;
}
public
int
getValue
()
{
return
value
;
}
public
String
getName
()
{
return
name
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/ProductCodeEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
import
lombok.AllArgsConstructor
;
@AllArgsConstructor
public
enum
ProductCodeEnum
{
/**
* 异常管理中心
*/
EHC
(
"ehc"
,
"异常管理中心"
),
/**
* 品控
*/
QC
(
"qc"
,
"品控"
),
/**
* 承运商平台
*/
CARRIER
(
"carrier"
,
"承运商"
),
/**
* 仓配
*/
ARK
(
"ark"
,
"仓配"
),
/**
* 商品中心
*/
ITEM_CENTER
(
"ic"
,
"商品中心"
),
/**
* 同舟系统
*/
SUPPLIER_API
(
"supplier_api"
,
"同舟"
),
/**
* 大黄蜂
*/
HORNET
(
"hornet"
,
"大黄蜂"
),
/**
* 供应商协同
*/
YXSUPPLIER
(
"yxsupplier"
,
"供应商协同"
),
/**
* 采购
*/
PMC
(
"pmc"
,
"采购"
),
/**
* 逆向管理系统
*/
SUPPLIER_RL
(
"yanxuan-supplier-rl"
,
"逆向管理系统"
),
/**
* 销退系统
*/
SALES_RETURN
(
"yanxuan-sales-return"
,
"销退系统"
);
public
static
ProductCodeEnum
getByValue
(
String
code
)
{
for
(
ProductCodeEnum
c:
ProductCodeEnum
.
values
())
{
if
(
c
.
getCode
().
equals
(
code
))
{
return
c
;
}
}
return
null
;
}
private
String
code
;
private
String
name
;
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/enums/StaffStatusEnum.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
enums
;
import
lombok.AllArgsConstructor
;
@AllArgsConstructor
public
enum
StaffStatusEnum
{
/**
* 正式
*/
OFFICIAL
(
0
,
"正式"
),
/**
* 试用
*/
TRIAL
(
1
,
"试用"
),
/**
* 外包
*/
WB
(
2
,
"外包"
),
/**
* 离职
*/
DIMISSION
(
6
,
"离职"
),
;
public
static
StaffStatusEnum
getByValue
(
Integer
code
)
{
for
(
StaffStatusEnum
c:
StaffStatusEnum
.
values
())
{
if
(
c
.
getType
().
equals
(
code
))
{
return
c
;
}
}
return
null
;
}
private
Integer
type
;
private
String
name
;
public
Integer
getType
()
{
return
type
;
}
public
String
getName
()
{
return
name
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/exception/RpcConnectException.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
exception
;
/**
* @author lwtang
* @date 2019-02-19
*/
public
class
RpcConnectException
extends
RpcException
{
public
RpcConnectException
(
String
message
)
{
super
(
message
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/exception/RpcException.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
exception
;
/**
* @author lwtang
* @date 2019-02-19
*/
public
class
RpcException
extends
RuntimeException
{
public
RpcException
(
String
message
)
{
super
(
message
);
}
public
RpcException
(
Throwable
t
)
{
super
(
t
);
}
public
RpcException
(
String
message
,
Throwable
t
)
{
super
(
message
,
t
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/exception/RpcStatusException.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
exception
;
import
com.netease.mail.yanxuan.change.integration.email.exception.RpcException
;
/**
* http status code 非 200
*
* @author lwtang
* @date 2019-02-19
*/
public
class
RpcStatusException
extends
RpcException
{
private
int
code
;
public
RpcStatusException
(
int
code
,
String
message
)
{
super
(
message
);
this
.
code
=
code
;
}
public
int
getCode
()
{
return
this
.
code
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/exception/RpcTimeoutException.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
exception
;
/**
* @author lwtang
* @date 2019-02-19
*/
public
class
RpcTimeoutException
extends
RpcException
{
public
RpcTimeoutException
(
String
message
)
{
super
(
message
);
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/IEmailEhcService.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
;
import
com.netease.mail.yanxuan.change.integration.email.email.*
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailEhcFlowEnum
;
import
java.io.File
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
IEmailEhcService
{
/**
* 任务工单发送邮件
*
* @param toList
* 收件人列表
* @param ccList
* 抄送人列表
* @param model
* 要素
* @param emailEhcFlowEnum
*/
void
sendTaskEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
AbnormalTaskFlowEhcEmailModel
model
,
EmailEhcFlowEnum
emailEhcFlowEnum
);
/**
* 供应商专属邮件发送
*
* @param supplierId
* @param model
* @param emailEhcFlowEnum
*/
void
sendSupplierEmail
(
String
supplierId
,
AbnormalTaskFlowEhcEmailModel
model
,
EmailEhcFlowEnum
emailEhcFlowEnum
);
/**
* 供应商惩罚工单发送邮件
*
* @param toList
* @param ccList
* @param model
* @param emailEhcFlowEnum
*/
void
sendPunishEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
AbnormalPunishFlowEhcEmailModel
model
,
EmailEhcFlowEnum
emailEhcFlowEnum
);
/**
* 异常问题工单发送邮件
*
* @param toList
* 收件人列表
* @param ccList
* 抄送人列表.
* @param emailEhcFlowEnum
* 邮件模板
* @param abnormalEhcEmailModel
* 数据
*/
void
sendAbnormalEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailEhcFlowEnum
emailEhcFlowEnum
,
AbnormalEhcEmailModel
abnormalEhcEmailModel
);
/**
* 批量事件工单发送邮件
*
* @param toList
* @param ccList
* @param model
* @param
*/
void
sendBathEventEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
AbnormalBathEventEhcEmailModel
model
,
EmailEhcFlowEnum
emailEhcFlowEnum
);
/**
* 临期/过期工单发送邮件
*
* @param toList
* @param ccList
* @param model
* @param emailEhcFlowEnum
*/
void
sendOverTimeEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
FlowEhcOverTimeEmailModel
model
,
EmailEhcFlowEnum
emailEhcFlowEnum
);
/**
* 邮件发送
*
* @param toList
* 收件人列表
* @param ccList
* 抄送人列表
* @param factor
* 要素
* @param fileList
* 附件
*/
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailEhcFactor
factor
,
List
<
File
>
fileList
);
/**
* 获取邮件发送工单地址
*
* @param uid
* @return
*/
String
getEmailContentUrl
(
String
uid
);
/**
* 获取异常任务工单邮件发送地址
*
* @param uid
* @param execUserType
* @return
*/
String
getTaskFlowEmailUrl
(
String
uid
,
Integer
execUserType
);
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/IEmailService.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
;
import
com.netease.mail.yanxuan.change.integration.email.email.EmailFactor
;
import
java.io.File
;
import
java.util.Collection
;
import
java.util.List
;
/**
* 发送邮件
*/
public
interface
IEmailService
{
/**
* @param to 收件人
* @param emailFactor 邮件要素
*/
void
sendEmail
(
String
to
,
EmailFactor
emailFactor
);
/**
* @param toList 收件人列表
* @param factor 要素
*/
void
sendEmail
(
Collection
<
String
>
toList
,
EmailFactor
factor
);
/**
* @param toList 收件人
* @param ccList 抄送人
* @param factor 要素
* @param fileList 附件
*/
void
sendEmail
(
String
toList
,
String
ccList
,
EmailFactor
factor
,
List
<
File
>
fileList
);
/**
*
* @param toList 收件人列表
* @param ccList 抄送人列表
* @param factor 要素
*/
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailFactor
factor
);
/**
* @param toList 收件人列表
* @param ccList 抄送人列表
* @param factor 要素
* @param fileList 附件
*/
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailFactor
factor
,
List
<
File
>
fileList
);
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/IIusService.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
;
import
java.util.List
;
import
com.netease.mail.yanxuan.change.integration.email.dto.DeptIdLevelLeaderDTO
;
import
com.netease.mail.yanxuan.change.integration.email.dto.ThirdOrgPosDTO
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserInfoDTO
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserUniteOrgMetaDTO
;
import
com.netease.mail.yanxuan.change.integration.email.email.SearchResult
;
import
com.netease.mail.yanxuan.change.integration.email.dto.UserProductRoleStaticsInfosDTO
;
import
com.netease.mail.yanxuan.change.integration.email.email.UserVO
;
import
com.netease.yanxuan.flowx.sdk.meta.dto.base.UserBaseDTO
;
/**
* @author jiyuwang 商品是否有模块化受控标准
*/
public
interface
IIusService
{
/**
* 获取用户的部门信息和在职情况
*
* @param uid
* @return
*/
UserInfoDTO
getUserInfo
(
String
uid
);
/**
* 查询用户集合,不传时查全部
* http://yx.mail.netease.com/bee#/interface/list;serviceCode=yanxuan-ius;branchName=master;selectedInterface=1010712
* @param productCode
* @param uid
* @return
*/
List
<
UserInfoDTO
>
queryUserInfo
(
String
productCode
,
String
uid
);
/**
* 根据uid获取部门
*
* @param uid
* @return
*/
String
getOrgByUid
(
String
uid
);
/**
* 判断用户是否离职
*
* @param uid
* @return true: 离职;false: 未离职
*/
boolean
checkUserIsLeave
(
String
uid
);
/**
* 获取部门负责人
*
* @param uid
* @param orgPosId
* @return
*/
List
<
DeptIdLevelLeaderDTO
>
getDeptIdLevelLeader
(
String
uid
,
Integer
orgPosId
);
/**
* 根据用户获取三级部门负责人
*
* @param uid
* @return
*/
List
<
DeptIdLevelLeaderDTO
>
getThreeLevelDeptLeader
(
String
uid
);
/**
* 获取四级部门负责人
* @param uid
* @return
*/
List
<
DeptIdLevelLeaderDTO
>
getForthLevelDeptLeader
(
String
uid
);
/**
* 模糊查询用户信息
*/
List
<
UserUniteOrgMetaDTO
>
fuzzyQueryUserInformation
(
int
queryType
,
String
keyword
);
/**
* 模糊查询用户信息(权限中心)
*/
List
<
UserUniteOrgMetaDTO
>
fuzzyQueryUserInfo
(
Long
orgPosId
,
int
level
,
int
type
,
int
queryType
,
String
keyword
);
/**
* 获得该系统下的该用户组织身份权限或者特殊权限
*
* @param staff
* @param roleId
* @param orgPosId
* @param stationId
* @param locked
* @param keyword
* @param curPage
* @param pageSize
* @return
*/
SearchResult
<
UserProductRoleStaticsInfosDTO
>
getAllUserProductRoleInfos
(
Integer
staff
,
Long
roleId
,
Long
orgPosId
,
Integer
stationId
,
Integer
locked
,
String
keyword
,
Integer
curPage
,
Integer
pageSize
);
/**
* 根据产品号和 roleId 获取用户列表
*
* @param productCode
* @param roleId
* @return
*/
List
<
UserBaseDTO
>
listUserByRoleId
(
String
productCode
,
Long
roleId
);
/**
* 根据uid获取三级部门人员相关信息
* @param uid
* @return
*/
UserVO
lv3UserInfo
(
String
uid
);
/**
* 获取用户所在系统编码(弃用)
*
* @param uid
* @return
*/
@Deprecated
List
<
String
>
listProductHasUid
(
String
uid
);
/**
* 三级部门查询列表
* @param name
* @return
*/
List
<
ThirdOrgPosDTO
>
getThirdOrgPosName
(
String
name
);
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/ISupplierEmailService.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
;
import
com.netease.mail.yanxuan.change.integration.email.email.SupplierEmailResponseResult
;
import
com.netease.mail.yanxuan.change.integration.email.email.SupplierEmailSendReq
;
public
interface
ISupplierEmailService
{
SupplierEmailResponseResult
sendSupplierEmail
(
SupplierEmailSendReq
req
);
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/IUasEhcClient.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
;
import
java.io.File
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
IUasEhcClient
{
/**
* 邮件发送
*
* @param subject
* @param content
* @param toList
* @param ccList
* @param fileList
*/
void
sendEmail
(
String
subject
,
String
content
,
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
List
<
File
>
fileList
);
}
\ No newline at end of file
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/EmailEhcServiceImpl.java
0 → 100644
View file @
f6bd68d4
This diff is collapsed.
Click to expand it.
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/EmailServiceImpl.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
.
impl
;
import
com.netease.mail.yanxuan.change.integration.email.email.EmailFactor
;
import
com.netease.mail.yanxuan.change.integration.email.service.IEmailService
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailParamEnum
;
import
com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum
;
import
com.netease.mail.yanxuan.change.common.util.RequestUtil
;
import
com.netease.mail.yanxuan.qc.service.client.remote.UasClient
;
import
com.netease.mail.yanxuan.qc.service.client.utils.http.HttpClientTemplate
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.PostConstruct
;
import
java.io.File
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
public
class
EmailServiceImpl
implements
IEmailService
{
@Autowired
private
UasClient
uasClient
;
@Autowired
private
EmailTemplateServiceImpl
emailTemplateService
;
@Autowired
private
HttpClientTemplate
httpClientTemplate
;
@PostConstruct
private
void
init
()
{
httpClientTemplate
.
init
();
httpClientTemplate
.
setDefaultCharset
(
RequestUtil
.
CHAR_SET
);
}
@Override
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
String
to
,
EmailFactor
emailFactor
)
{
this
.
sendEmail
(
to
,
null
,
emailFactor
,
null
);
}
@Override
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
Collection
<
String
>
toList
,
EmailFactor
factor
)
{
this
.
sendEmail
(
toList
,
null
,
factor
,
null
);
}
@Override
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
String
toList
,
String
ccList
,
EmailFactor
factor
,
List
<
File
>
fileList
)
{
List
<
String
>
_toList
=
null
;
List
<
String
>
_ccList
=
null
;
if
(
StringUtils
.
isNotBlank
(
toList
))
{
_toList
=
Arrays
.
asList
(
toList
.
split
(
","
));
}
if
(
StringUtils
.
isNotBlank
(
ccList
))
{
_ccList
=
Arrays
.
asList
(
ccList
.
split
(
","
));
}
this
.
sendEmail
(
_toList
,
_ccList
,
factor
,
fileList
);
}
@Override
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailFactor
factor
)
{
if
(
factor
!=
null
)
{
String
content
=
this
.
content
(
factor
);
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
toList
=
toList
.
stream
().
filter
(
e
->
e
!=
null
).
collect
(
Collectors
.
toList
());
}
if
(!
CollectionUtils
.
isEmpty
(
ccList
))
{
ccList
=
ccList
.
stream
().
filter
(
e
->
e
!=
null
).
collect
(
Collectors
.
toList
());
}
this
.
uasClient
.
sendEmail
(
factor
.
getSubject
(),
content
,
toList
,
ccList
,
null
);
}
}
@Override
@Async
(
"asyncEmail"
)
public
void
sendEmail
(
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
EmailFactor
factor
,
List
<
File
>
fileList
)
{
if
(
factor
!=
null
)
{
String
content
=
this
.
content
(
factor
);
String
abnormalTitle
=
(
String
)
factor
.
getData
().
get
(
"abnormalTitle"
);
String
taskType
=
(
String
)
factor
.
getData
().
get
(
EmailParamEnum
.
TASK_TYPE
.
getKey
());
String
subject
=
factor
.
getSubject
();
if
(!
StringUtils
.
isEmpty
(
abnormalTitle
))
{
subject
=
String
.
format
(
subject
,
abnormalTitle
,
taskType
);
}
if
(!
StringUtils
.
isEmpty
(
taskType
))
{
subject
=
String
.
format
(
subject
,
taskType
);
}
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
toList
=
toList
.
stream
().
filter
(
e
->
e
!=
null
).
collect
(
Collectors
.
toList
());
}
if
(!
CollectionUtils
.
isEmpty
(
ccList
))
{
ccList
=
ccList
.
stream
().
filter
(
e
->
e
!=
null
).
collect
(
Collectors
.
toList
());
}
this
.
uasClient
.
sendEmail
(
subject
,
content
,
toList
,
ccList
,
fileList
);
}
}
/**
* 根据邮件模版获取邮件内容
*
* @param emailFactor
* @return
*/
public
String
content
(
EmailFactor
emailFactor
)
{
EmailTemplateEnum
emailTemplateEnum
=
emailFactor
.
getEmailTemplateEnum
();
return
emailTemplateService
.
template
(
emailTemplateEnum
.
getCode
(),
emailFactor
.
getData
(),
emailFactor
.
getType
());
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/EmailTemplateServiceImpl.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.change.integration.email.conig.RpcTemplate
;
import
com.netease.mail.yanxuan.change.integration.email.email.EmailTemplateResponResult
;
import
com.netease.mail.yanxuan.change.integration.email.email.EmailTemplateRpcResult
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.Map
;
@Service
public
class
EmailTemplateServiceImpl
{
private
static
final
String
TEST_URL
=
"http://127.0.0.1:8550/proxy/test.yanxuan-template.service.mailsaas/templates/flowx/template/assemble.json"
;
private
static
final
String
ONELINE_URL
=
"http://127.0.0.1:8550/proxy/online.yanxuan-template.service.mailsaas/templates/flowx/template/assemble.json"
;
@Value
(
"${rpc.url.email.template}"
)
private
String
url
;
@Autowired
private
RpcTemplate
rpcTemplate
;
public
String
template
(
String
templateCode
,
Object
mockData
,
String
type
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"mockData"
,
mockData
);
params
.
put
(
"templateCode"
,
templateCode
);
params
.
put
(
"type"
,
type
);
EmailTemplateResponResult
emailTemplateResponResult
=
rpcTemplate
.
postJson
(
url
,
new
JSONObject
(
params
).
toJSONString
(),
500
,
new
EmailTemplateRpcResult
<>(
EmailTemplateResponResult
.
class
));
return
emailTemplateResponResult
.
getData
();
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/IUasClientEhcImpl.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
.
impl
;
import
java.io.File
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
com.netease.mail.yanxuan.change.common.bean.ResponseCode
;
import
com.netease.mail.yanxuan.change.integration.email.service.IUasEhcClient
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.netease.mail.yanxuan.qc.service.client.utils.http.HttpClientExecutor
;
import
com.netease.yanxuan.sc.guard.lib.meta.enums.guard.Type
;
@Service
public
class
IUasClientEhcImpl
implements
IUasEhcClient
{
private
static
final
String
PUSH_EMAIL
=
"/push/email/yanxuan-sc-ehc"
;
public
static
final
String
CODE
=
"code"
;
private
Logger
logger
=
LoggerFactory
.
getLogger
(
EmailEhcServiceImpl
.
class
);
@Autowired
private
HttpClientExecutor
httpClientExecutor
;
@Value
(
"${rpc.url.uas.basic}"
)
private
String
uasUrl
;
@Override
public
void
sendEmail
(
String
subject
,
String
content
,
Collection
<
String
>
toList
,
Collection
<
String
>
ccList
,
List
<
File
>
fileList
)
{
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
String
url
=
uasUrl
+
PUSH_EMAIL
;
Map
<
String
,
String
>
params
=
new
HashMap
();
params
.
put
(
"subject"
,
subject
);
params
.
put
(
"content"
,
content
);
if
(!
CollectionUtils
.
isEmpty
(
toList
))
{
params
.
put
(
"to"
,
StringUtils
.
join
(
toList
,
","
));
}
params
.
put
(
"topic"
,
"ehc"
);
if
(!
CollectionUtils
.
isEmpty
(
ccList
))
{
params
.
put
(
"cc"
,
StringUtils
.
join
(
ccList
,
","
));
}
String
res
=
null
;
try
{
res
=
this
.
httpClientExecutor
.
doPost
(
url
,
params
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"[sendEmail] params={}, e={}"
,
JSON
.
toJSONString
(
params
),
e
);
}
this
.
logger
.
info
(
"[sendEmail] toList={}, ccList={}, params={}, res={} "
,
JSON
.
toJSONString
(
toList
),
JSON
.
toJSONString
(
ccList
),
JSON
.
toJSONString
(
params
),
JSON
.
toJSONString
(
res
));
JSONObject
jsonObject
=
JSON
.
parseObject
(
res
);
if
(
jsonObject
.
getInteger
(
CODE
)
!=
ResponseCode
.
SUCCESS
.
getCode
())
{
this
.
logger
.
error
(
Type
.
RPC
.
toString
(),
"SendEmail"
,
null
,
"send email failed, subject={},toList={},ccList={}"
,
new
Object
[]
{
subject
,
JSON
.
toJSONString
(
toList
),
JSON
.
toJSONString
(
ccList
)
});
}
}
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/IusServiceImpl.java
0 → 100644
View file @
f6bd68d4
This diff is collapsed.
Click to expand it.
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/service/impl/SupplierEmailServiceImpl.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.netease.mail.yanxuan.change.integration.email.conig.RpcTemplate
;
import
com.netease.mail.yanxuan.change.integration.email.email.RpcObjectHandler
;
import
com.netease.mail.yanxuan.change.integration.email.email.SupplierEmailResponseResult
;
import
com.netease.mail.yanxuan.change.integration.email.email.SupplierEmailSendReq
;
import
com.netease.mail.yanxuan.change.integration.email.service.ISupplierEmailService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.beans.factory.annotation.Value
;
@Service
public
class
SupplierEmailServiceImpl
implements
ISupplierEmailService
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
SupplierEmailServiceImpl
.
class
);
@Autowired
private
RpcTemplate
rpcTemplate
;
@Value
(
"${rpc.url.supplier.purchase}"
)
private
String
emailUrl
;
/**
* 接口
*/
private
static
final
String
SUPPLIER_EMAIL_SEND
=
"/api/supplier/msg/sendMail.json"
;
@Override
public
SupplierEmailResponseResult
sendSupplierEmail
(
SupplierEmailSendReq
req
)
{
logger
.
info
(
"[sendSupplierEmail] req:{}"
,
JSON
.
toJSONString
(
req
));
SupplierEmailResponseResult
responseResult
=
null
;
try
{
responseResult
=
rpcTemplate
.
postJson
(
emailUrl
+
SUPPLIER_EMAIL_SEND
,
JSON
.
toJSONString
(
req
),
500
,
new
RpcObjectHandler
<>(
SupplierEmailResponseResult
.
class
));
}
catch
(
Exception
e
)
{
logger
.
error
(
"[sendSupplierEmail] 供应商邮件发送失败 e:{}"
,
e
.
getMessage
());
}
if
(
responseResult
==
null
)
{
return
null
;
}
return
responseResult
;
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/util/EncodeUtil.java
0 → 100644
View file @
f6bd68d4
package
com
.
netease
.
mail
.
yanxuan
.
change
.
integration
.
email
.
util
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author lwtang
* @date 2019-02-19
*/
public
class
EncodeUtil
{
private
static
final
char
[]
CHARS
=
new
char
[]
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'a'
,
'b'
,
'c'
,
'd'
,
'e'
,
'f'
};
public
static
String
encode
(
String
text
)
{
try
{
return
URLEncoder
.
encode
(
text
,
"UTF-8"
);
}
catch
(
Exception
e
)
{
return
text
;
}
}
public
static
String
encodeMap
(
Map
<?,
?>
map
)
{
List
<
String
>
lines
=
new
ArrayList
<>();
for
(
Map
.
Entry
<?,
?>
entry:
map
.
entrySet
())
{
lines
.
add
(
String
.
valueOf
(
entry
.
getKey
())
+
"="
+
String
.
valueOf
(
entry
.
getValue
()));
}
return
StringUtils
.
join
(
lines
,
"&"
);
}
public
static
String
decode
(
String
text
)
{
try
{
return
URLDecoder
.
decode
(
text
,
"UTF-8"
);
}
catch
(
Exception
e
)
{
return
text
;
}
}
public
static
String
ASCIIHex
(
String
text
)
{
byte
[]
bytes
=
text
.
getBytes
();
char
[]
chars
=
new
char
[
bytes
.
length
*
2
];
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
chars
[
2
*
i
]
=
CHARS
[
bytes
[
i
]
>>
4
];
chars
[
2
*
i
+
1
]
=
CHARS
[
bytes
[
i
]
%
16
];
}
return
new
String
(
chars
).
toUpperCase
();
}
}
yanxuan-qc-change-system-integration/src/main/java/com/netease/mail/yanxuan/change/integration/email/util/HttpClientUtil.java
0 → 100644
View file @
f6bd68d4
This diff is collapsed.
Click to expand it.
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