Commit 6da7c095 by “zcwang”

Merge remote-tracking branch 'origin/feature-changeFlow-221110' into feature-changeFlow-221110

parents 07af09a2 3c23eb32
......@@ -41,7 +41,7 @@
<netease.ddb.version>4.6.0.4</netease.ddb.version>
<!-- store-db -->
<mysql.version>8.0.15</mysql.version>
<mysql.version>5.1.34</mysql.version>
<mybatis.spring.boot.starter.version>1.1.1</mybatis.spring.boot.starter.version>
<!-- store-redis -->
......@@ -384,16 +384,16 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>2.7.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>2.7.0</version>-->
<!-- </dependency>-->
<!--qc -->
<!--<dependency>-->
<!-- <groupId>com.netease.yanxuan</groupId>-->
......
......@@ -10,10 +10,10 @@ spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
# mysql
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://112.74.86.21/tb_yx_link?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/change_config?useUnicode=true&characterEncoding=UTF-8&autoReconnet=true
spring.datasource.username=root
spring.datasource.password=wangjiaxiang
spring.datasource.password=abc123
#tomcat
server.tomcat.max-threads=600
......@@ -27,18 +27,13 @@ server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.configuration.map-underscore-to-camel-case=true
# redis
spring.redis.host=localhost
spring.redis.password=
spring.redis.database=0
spring.redis.pool.max-active=50
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.timeout=3000
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=-1
spring.redis.jedis.pool.max-idle=500
spring.redis.jedis.pool.min-idle=0
spring.redis.lettuce.shutdown-timeout=0
spring.redis.password=
spring.redis.pool.max-wait=10000
spring.redis.pool.max-idle=20
spring.redis.timeout=20000
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
*/
private String type;
}
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;
}
}
......@@ -9,108 +9,19 @@ 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_CHANGE_RELEASE_FLOW("yxqc_change_release_flow","发起变更","【待处理】%s 变更申请提交 "),
YX_QC_DECIDE_CARE_OF("yxqc_decide_care_of","品控判定异常等级制定临时措施_转交", "【ECR异常工单跟进】 %s,请判定异常等级和制定临时措施"),
YX_QC_CHANGE_SUBMIT_CANCEL("yx_qc_change_submit_cancel","变更取消","【待处理】%s 变更申请提交 "),
YX_QC_DECIDE_SUBMIT("yxqc_decide_submit","品控判定异常等级制定临时措施_提交", "【ECR异常工单审批】 %s,请审批异常等级和临时措施"),
YX_QC_CHANGE_SUBMIT_FORWARD("yx_qc_change_submit_forward","变更转交","%s 变更工单转交通知"),
YX_QC_GROUP_LEADER_CHECK_CARE_OF("yxqc_group_leader_check_care_of","组长审批_转交", "【ECR异常工单审批】 %s,请审批异常等级和临时措施"),
YX_QC_CHANGE_EXECUTE(" yx_qc_change_execute","变更执行","【待处理】变更行动项确认 %s %s %s"),
YX_QC_GROUP_LEADER_CHECK_PASS_NOT_ABNORMAL("yxqc_group_leader_check_pass_not_abnormal","组长审批_审批通过_异常审批人审批关联工单/非异常问题" , "【ECR异常工单审批】 %s,请审批异常等级和临时措施"),
YX_QC_CHANGE_AFFIRM("yx_qc_change_affirm","变更确认","【待处理】变更结果确认 %s %s %s"),
YX_QC_GROUP_LEADER_CHECK_PASS_METHOD("yxqc_group_leader_check_pass_method","组长审批_审批通过_原因分析和纠正措施、标准化和验证措施", "【ECR异常工单跟进】 %s,请分析原因和制定纠正措施"),
YX_QC_CHANGE_FINISH("yx_qc_change_finish","工单完结","【已完结】%s %s %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","品控测试", "");
YX_QC_CHANGE_PENDING("yx_qc_change_pending","待处理","【待处理】执行标准号 执行标准名称已变更 请排查对应的商品变更");
/**
* 模版code
*/
......
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;
......@@ -11,40 +10,13 @@ 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 要素
* @param subjectParams 标题参数
*/
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);
void sendEmail(Collection<String> toList, Collection<String> ccList, EmailFactor factor, List<String>subjectParams);
}
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
......@@ -16,6 +16,7 @@ import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
......@@ -31,35 +32,8 @@ public class EmailServiceImpl implements IEmailService {
@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) {
EmailFactor factor,List<String>subjectParams) {
if (factor != null) {
String content = this.content(factor);
if (!CollectionUtils.isEmpty(toList)) {
......@@ -68,34 +42,12 @@ public class EmailServiceImpl implements IEmailService {
if (!CollectionUtils.isEmpty(ccList)) {
ccList = ccList.stream().filter(e -> e != null).collect(Collectors.toList());
}
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) {
logger.info("请求前参数查看\n"+factor.getData().toString());
String content = this.content(factor);
logger.info("请求后参数查看"+factor.getData().toString());
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());
//标题参数处理
if (subjectParams != null){
subject = String.format(subject,subjectParams.toArray());
}
uasClient.sendEmail(subject, content, toList, ccList, fileList);
uasClient.sendEmail(subject, content, toList, ccList, null);
}
}
......
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 com.netease.mail.yanxuan.change.integration.flow.email.EmailRpcService;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@Service
public class IUasClientEhcImpl implements IUasEhcClient {
public static final String CODE = "code";
private Logger logger = LoggerFactory.getLogger(IUasClientEhcImpl.class);
@Autowired
private EmailRpcService rpcService;
@Override
public void sendEmail(String subject, String content, Collection<String> toList, Collection<String> ccList,
List<File> fileList) {
if (!CollectionUtils.isEmpty(toList)) {
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.rpcService.sendEmailInfo(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("SendEmail", null,
"send email failed, subject={},toList={},ccList={}",
new Object[] { subject, JSON.toJSONString(toList), JSON.toJSONString(ccList) });
}
}
}
}
......@@ -24,9 +24,4 @@ public interface EmailRpcService {
@RequestParam(name = "to") String to,
@RequestParam(name = "cc",required = false)String cc);
//yanxuan-sc-ehc
@PostMapping("/push/email/qc/upload.json")
String sendEmailInfo(Map<String, String> params);
}
......@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
......@@ -116,19 +117,21 @@ public class ChangeConfigController {
public void queryCommanderInfo(){
EmailFactor emailFactor = new EmailFactor();
emailFactor.setType(EmailTypeEnum.TEXT.getType());
emailFactor.setEmailTemplateEnum(EmailTemplateEnum.YX_QC_RELEASE_FLOW);
emailFactor.setEmailTemplateEnum(EmailTemplateEnum.YX_QC_CHANGE_SUBMIT_FORWARD);
List<String> list = new ArrayList<>();
list.add("99888");
ArrayList<String> strings = new ArrayList<>();
strings.add("wb.tanglongwei@mesg.corp.netease.com");
HashMap<String,Object> map = new HashMap<>();
map.put("flowId","工单ID");
map.put("releaseId","发起人账号");
map.put("releaseName","发起人姓名");
map.put("abnormalTitle","异常标题");
map.put("flowLink","工单链接");
map.put("findTime","findTime");
map.put("findDes","findDes");
map.put("changeId","变更Id");
map.put("changeSubject","变更主体");
map.put("changeContent","变更内容");
map.put("changeCommander","负责人名称");
map.put("changeCommanderEmail","负责人邮箱");
map.put("restsChangeCommander","转交后责任人名称");
map.put("restsChangeCommanderEmail","转交后责任人邮箱");
emailFactor.setData(map);
iEmailService.sendEmail(strings,emailFactor);
iEmailService.sendEmail(strings,null,emailFactor,list);
}
......
dschedule.enable=true
dschedule.env=test
dschedule.app-id=yanxuan-sc-ehc
dschedule.job-group=235
dschedule.enable-auto-register=true
dschedule.executor-fail-strategy=fail_alarm
dschedule.alarm-email=wb.tanglongwei@mesg.corp.netease.com
dschedule.adminAddresses=http://127.0.0.1:8550/proxy/test.dschedule-admin.service.mailsaas/
# mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://112.74.86.21/tb_yx_link?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=wangjiaxiang
#tomcat
server.tomcat.max-threads=600
server.tomcat.uri-encoding=UTF-8
server.tomcat.basedir=/home/logs/access
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %{X-Forwarded-For}i %D %{P_INFO}c %{Referer}i %{User-Agent}i %{Host}i
# mybatis
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.configuration.cache-enabled=true
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis.configuration.map-underscore-to-camel-case=true
# redis
spring.redis.host=localhost
spring.redis.password=
spring.redis.database=0
spring.redis.port=6379
spring.redis.timeout=3000
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=-1
spring.redis.jedis.pool.max-idle=500
spring.redis.jedis.pool.min-idle=0
spring.redis.lettuce.shutdown-timeout=0
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment