Commit fd8c3051 by huluobin

Merge branch 'technician_push' into branch

# Conflicts:
#	src/main/resources/application-dev.yml
#	src/main/resources/application-test.yml
parents c04ae62c b6943319
log
\ No newline at end of file
...@@ -783,28 +783,37 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -783,28 +783,37 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
/*2、校验提交的预约时间是否可约*/ /*2、校验提交的预约时间是否可约*/
IdleTimeQuery query = new IdleTimeQuery(); IdleTimeQuery query = new IdleTimeQuery();
//店铺id
query.setDepartmentId(scheduleManage.getDepartmentId()); query.setDepartmentId(scheduleManage.getDepartmentId());
//预约日期
query.setScheduleDate(new SimpleDateFormat("yyyy-MM-dd").format(scheduleManage.getArriveTime())); query.setScheduleDate(new SimpleDateFormat("yyyy-MM-dd").format(scheduleManage.getArriveTime()));
query.setListScheduleServer(scheduleManage.getListScheduleServer() query.setListScheduleServer(scheduleManage.getListScheduleServer()
.stream() .stream()
.map(scheduleServeCommand -> { .map(scheduleServeCommand -> {
ScheduleServeQuery scheduleServe = new ScheduleServeQuery(); ScheduleServeQuery scheduleServe = new ScheduleServeQuery();
//时长
scheduleServe.setLengthTimeForEndTime(scheduleServeCommand.getLengthTime()); scheduleServe.setLengthTimeForEndTime(scheduleServeCommand.getLengthTime());
//款式id
scheduleServe.setProduceId(scheduleServeCommand.getProduceId()); scheduleServe.setProduceId(scheduleServeCommand.getProduceId());
//服务id
scheduleServe.setServeId(scheduleServeCommand.getServeId()); scheduleServe.setServeId(scheduleServeCommand.getServeId());
return scheduleServe; return scheduleServe;
}) })
.collect(Collectors.toList())); .collect(Collectors.toList()));
//是否显示详情
query.setShowNodeDetail(true); query.setShowNodeDetail(true);
//查询时间节点
query.setDateTimeList(Lists.newArrayList(scheduleManage.getArriveTime().getTime())); query.setDateTimeList(Lists.newArrayList(scheduleManage.getArriveTime().getTime()));
//查询方案树
List<IdleTimeDTO> idleTimeDTOList = this.queryIdleTime(query); List<IdleTimeDTO> idleTimeDTOList = this.queryIdleTime(query);
//如果时间节点不可用返回false
IdleTimeDTO idleTimeDTO = idleTimeDTOList.stream().findAny().orElseThrow(NullPointerException::new); IdleTimeDTO idleTimeDTO = idleTimeDTOList.stream().findAny().orElseThrow(NullPointerException::new);
if (!idleTimeDTO.isStatus()) { if (!idleTimeDTO.isStatus()) {
throw new RRException("预约时间不可用"); throw new RRException("预约时间不可用");
} }
/*3、判断美甲师是否是可用的美甲师*/ /*3、如果是指定美甲师、判断美甲师是否仍然可用*/
//构造子树 //构造路径
List<TreeProgram> treeProgramList = new ArrayList<>(); List<TreeProgram> treeProgramList = new ArrayList<>();
TreeProgram treeProgram = new TreeProgram(); TreeProgram treeProgram = new TreeProgram();
List<ScheduleServe> scheduleServeList = scheduleManage.getListScheduleServer() List<ScheduleServe> scheduleServeList = scheduleManage.getListScheduleServer()
...@@ -812,14 +821,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -812,14 +821,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
.filter(scheduleServe -> scheduleServe.getServeId() == null) .filter(scheduleServe -> scheduleServe.getServeId() == null)
.collect(Collectors.toList()); .collect(Collectors.toList());
List<List<ScheduleServe>> params = new ArrayList<>(); //方案树
scheduleServeList.forEach(scheduleServe -> { TreeProgram targetTree = idleTimeDTO.getTreeProgram();
params.add(CloneUtil.deepClone(scheduleServeList));
});
boolean isPath = treeProgram.isSubTree(targetTree);
if (!isPath) {
throw new RRException("请重新选择美甲师");
}
} }
} }
/** /**
* 通过ScheduleServe构建TreeProgram * 通过ScheduleServe构建TreeProgram
* *
...@@ -869,6 +881,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -869,6 +881,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
public void submitSchedule(SubmitScheduleCommand cmd) throws ParseException, ExecutionException, InterruptedException { public void submitSchedule(SubmitScheduleCommand cmd) throws ParseException, ExecutionException, InterruptedException {
/*1、校验*/ /*1、校验*/
cmd.getScheduleManageDTO().setScheduledUser(SessionUtils.getCustomerId()); cmd.getScheduleManageDTO().setScheduledUser(SessionUtils.getCustomerId());
//参数补全
ScheduleManage scheduleManage = this.setScheduleServe(cmd.getScheduleManageDTO(), cmd.getDefaultNodeList()); ScheduleManage scheduleManage = this.setScheduleServe(cmd.getScheduleManageDTO(), cmd.getDefaultNodeList());
this.validSubmit(scheduleManage); this.validSubmit(scheduleManage);
...@@ -1139,7 +1152,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper, ...@@ -1139,7 +1152,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List<ScheduleServeCommand> scheduleServeCommandList = cmd.getScheduleServeDTOList(); List<ScheduleServeCommand> scheduleServeCommandList = cmd.getScheduleServeDTOList();
//根据defaultNodeList的参数设置服务开始时间,服务结束时间,服务美甲师 //如果defaultNodeList不为空 根据defaultNodeList的参数设置服务开始时间,服务结束时间,服务美甲师
if (ListUtil.isNotEmpty(defaultNodeList)) { if (ListUtil.isNotEmpty(defaultNodeList)) {
defaultNodeList.forEach(defaultNode -> { defaultNodeList.forEach(defaultNode -> {
scheduleServeCommandList scheduleServeCommandList
......
...@@ -34,7 +34,7 @@ public class PurchaseSkuServiceImpl extends ServiceImpl<PurchaseSkuMapper, Purch ...@@ -34,7 +34,7 @@ public class PurchaseSkuServiceImpl extends ServiceImpl<PurchaseSkuMapper, Purch
LambdaQueryWrapper<PurchaseSku> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PurchaseSku> wrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(keyWord)) { if (StringUtils.isNotEmpty(keyWord)) {
wrapper.eq(PurchaseSku::getSkuName, keyWord); wrapper.like(PurchaseSku::getSkuName, keyWord);
} }
return purchaseSkuMapper.selectPage(purchaseSkuIPage, wrapper); return purchaseSkuMapper.selectPage(purchaseSkuIPage, wrapper);
} }
......
...@@ -169,6 +169,11 @@ public class CareerCmdServiceImpl implements CareerCmdService { ...@@ -169,6 +169,11 @@ public class CareerCmdServiceImpl implements CareerCmdService {
@Override @Override
public Career career(Integer technicianId) { public Career career(Integer technicianId) {
return careerMapper.selectOne(new LambdaQueryWrapper<Career>().eq(Career::getTechnicianId, technicianId)); Career career = careerMapper.selectOne(new LambdaQueryWrapper<Career>().eq(Career::getTechnicianId, technicianId));
if (career == null) {
career = new Career();
career.setTechnicianId(technicianId);
}
return career;
} }
} }
package com.gogirl.dto;
import lombok.Data;
import java.util.List;
@Data
public class EnterpriseWxMsg {
private String msgType;
private EnterpriseTextWxMsg text;
@Data
public static class EnterpriseTextWxMsg {
private String content;
private List<String> mentioned_mobile_list;
}
}
...@@ -43,8 +43,7 @@ public class RRException extends RuntimeException implements Serializable { ...@@ -43,8 +43,7 @@ public class RRException extends RuntimeException implements Serializable {
private Map<String, Object> errorMap = new HashMap<>(); private Map<String, Object> errorMap = new HashMap<>();
private RRException() { private RRException() {
this.code = 500;
this.message = "业务异常";
} }
public RRException(String message) { public RRException(String message) {
......
...@@ -42,11 +42,7 @@ public class RRExceptionHandler { ...@@ -42,11 +42,7 @@ public class RRExceptionHandler {
result.setCode(e.getCode()); result.setCode(e.getCode());
result.setMessage(e.getMessage()); result.setMessage(e.getMessage());
if (e.getCode() == 500 && e.getMessage().equals("业务异常")) {
log.error(e.getMessage(), e);
} else {
log.error(e.getMessage()); log.error(e.getMessage());
}
return result; return result;
} }
...@@ -60,8 +56,11 @@ public class RRExceptionHandler { ...@@ -60,8 +56,11 @@ public class RRExceptionHandler {
result.setSuccess(false); result.setSuccess(false);
result.setCode(500); result.setCode(500);
result.setMessage(e.getMessage()); result.setMessage(e.getMessage());
//输出日志
this.log(e, request); this.log(e, request);
//错误邮件内容
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw); PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw); e.printStackTrace(pw);
...@@ -82,24 +81,7 @@ public class RRExceptionHandler { ...@@ -82,24 +81,7 @@ public class RRExceptionHandler {
String name = enumeration.nextElement(); String name = enumeration.nextElement();
log.error(name + "---" + request.getParameter(name)); log.error(name + "---" + request.getParameter(name));
} }
log.error(ex.getMessage(), ex);
if (ex instanceof RRException) {
if (((RRException) ex).getCode() == 500 && ex.getMessage().equals("业务异常")) {
this.logStackTrace(ex);
} else {
log.error(ex.getMessage());
}
} else {
this.logStackTrace(ex);
}
log.error("************************异常结束*******************************"); log.error("************************异常结束*******************************");
} }
private void logStackTrace(Exception ex) {
for (StackTraceElement stackTraceElement : ex.getStackTrace()) {
log.error(stackTraceElement.toString());
}
}
} }
...@@ -62,4 +62,6 @@ public class GogirlProperties { ...@@ -62,4 +62,6 @@ public class GogirlProperties {
private String adminBackendUrl; private String adminBackendUrl;
private String adminBackendAchievementsUrl; private String adminBackendAchievementsUrl;
private String enterpriseWechatWebhook;
} }
...@@ -357,7 +357,6 @@ public class Schedule { ...@@ -357,7 +357,6 @@ public class Schedule {
.eq(StoreTechnician::getStatus, 1) .eq(StoreTechnician::getStatus, 1)
.eq(StoreTechnician::getIsAdmin, false)); .eq(StoreTechnician::getIsAdmin, false));
storeTechnicianList.forEach(storeTechnician -> { storeTechnicianList.forEach(storeTechnician -> {
ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>> responseBodyType = new ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>>() { ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>> responseBodyType = new ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>>() {
......
...@@ -8,6 +8,15 @@ import java.util.Date; ...@@ -8,6 +8,15 @@ import java.util.Date;
*/ */
public interface PushMsgService { public interface PushMsgService {
/**
* 发送预约消息
*
* @param openId
* @param scheduleName
* @param arriveTime
* @param departmentName
* @param address
*/
void sendScheduleMsg(String openId, void sendScheduleMsg(String openId,
String scheduleName, String scheduleName,
Date arriveTime, Date arriveTime,
......
package com.gogirl.infrastructure.service.push;
public interface TechnicianPushService {
/**
* 预约提醒
*
* @param scheduledId
*/
void scheduledMsg(Integer scheduledId);
/**
* 取消预约提醒
*
* @param scheduledId
*/
void cancelScheduledMsg(Integer scheduledId);
/**
* 预约过期
*
* @param scheduledId
*/
void ScheduledOverTimeMsg(Integer scheduledId);
}
package com.gogirl.infrastructure.service.push.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.domain.order.serve.ScheduleManage;
import com.gogirl.domain.order.serve.ScheduleServe;
import com.gogirl.domain.store.store.StoreTechnician;
import com.gogirl.dto.EnterpriseWxMsg;
import com.gogirl.infrastructure.config.property.GogirlProperties;
import com.gogirl.infrastructure.mapper.order.serve.ScheduleManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.ScheduleServeMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreTechnicianMapper;
import com.gogirl.infrastructure.service.push.TechnicianPushService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
public class TechnicianPushServiceImpl implements TechnicianPushService {
@Resource
RestTemplate restTemplate;
@Resource
ScheduleManageMapper scheduleManageMapper;
@Resource
ScheduleServeMapper scheduleServeMapper;
@Resource
StoreTechnicianMapper storeTechnicianMapper;
@Resource
GogirlProperties gogirlProperties;
@Override
public void scheduledMsg(Integer scheduledId) {
ScheduleManage scheduleManage = scheduleManageMapper.selectById(scheduledId);
String name = scheduleManage.getStoreScheduleUsername();
String phone = scheduleManage.getTelephone();
String date = scheduleManage.getArriveTime().toString();
List<ScheduleServe> scheduleServeList = scheduleServeMapper.selectList(new LambdaQueryWrapper<ScheduleServe>().eq(ScheduleServe::getSchId, scheduledId));
String serves = scheduleServeList.stream().map(ScheduleServe::getServeName).collect(Collectors.joining(","));
List<StoreTechnician> storeTechnicianList = storeTechnicianMapper.selectBatchIds(scheduleServeList.stream().map(ScheduleServe::getTechnicianId).collect(Collectors.toList()));
String technicianNames = storeTechnicianList.stream().map(StoreTechnician::getName).collect(Collectors.joining(","));
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
EnterpriseWxMsg enterpriseWxMsg = new EnterpriseWxMsg();
enterpriseWxMsg.setMsgType("text");
EnterpriseWxMsg.EnterpriseTextWxMsg textWxMsg = new EnterpriseWxMsg.EnterpriseTextWxMsg();
StringBuilder builder = new StringBuilder();
String content = builder.append("预约提醒\n")
.append("预约客户 :").append(name).append("\n")
.append("预约客户手机 :").append(phone).append("\n")
.append("预约时间:").append(date).append("\n")
.append("预约技师").append(technicianNames).append("\n")
.append("预约项目: ").append(serves).append("\n")
.toString();
textWxMsg.setMentioned_mobile_list(storeTechnicianList.stream().map(StoreTechnician::getMobile).collect(Collectors.toList()));
textWxMsg.setContent(content);
enterpriseWxMsg.setText(textWxMsg);
HttpEntity<EnterpriseWxMsg> httpEntity = new HttpEntity<>(enterpriseWxMsg, httpHeaders);
restTemplate.postForEntity(gogirlProperties.getEnterpriseWechatWebhook(), httpEntity, String.class);
}
@Override
public void cancelScheduledMsg(Integer scheduledId) {
}
@Override
public void ScheduledOverTimeMsg(Integer scheduledId) {
}
}
...@@ -97,4 +97,39 @@ public class TreeProgram implements Serializable { ...@@ -97,4 +97,39 @@ public class TreeProgram implements Serializable {
return this.getStoreTechnicianDTO().getTechnicianId().equals(treeProgram.getStoreTechnicianDTO().getTechnicianId()) return this.getStoreTechnicianDTO().getTechnicianId().equals(treeProgram.getStoreTechnicianDTO().getTechnicianId())
&& this.getScheduleServeQuery().getServeId().equals(treeProgram.getScheduleServeQuery().getServeId()); && this.getScheduleServeQuery().getServeId().equals(treeProgram.getScheduleServeQuery().getServeId());
} }
public boolean isSubTree(TreeProgram treeProgram) {
if (treeProgram == null) {
return true;
}
boolean bool = this.isSameNode(treeProgram);
if (!bool) {
return false;
} else {
TreeProgram subPath = this.getChildList().stream().findAny().orElseThrow(NullPointerException::new);
List<TreeProgram> targetTreeList = treeProgram.getChildList();
TreeProgram targetTree = targetTreeList.stream().filter(val -> val.isSameNode(subPath)).findAny().orElse(null);
if (targetTree == null) {
return false;
}
return subPath.isSubTree(targetTree);
}
}
public boolean isSameNode(TreeProgram treeProgram) {
/**/
boolean sameServe = this.getScheduleServeQuery().getLengthTimeForEndTime()
.equals(treeProgram.getScheduleServeQuery().getLengthTimeForEndTime())
&& this.getScheduleServeQuery().getServeId().equals(treeProgram.getScheduleServeQuery().getServeId())
&& this.getScheduleServeQuery().getProduceId().equals(treeProgram.getScheduleServeQuery().getProduceId())
&& this.getScheduleServeQuery().getPeriod().equals(treeProgram.getScheduleServeQuery().getPeriod());
/**/
boolean sameTech = this.getStoreTechnicianDTO().getTechnicianId().equals(treeProgram.getStoreTechnicianDTO().getTechnicianId());
/**/
return sameServe && sameTech;
}
} }
...@@ -67,6 +67,8 @@ spring: ...@@ -67,6 +67,8 @@ spring:
required: true required: true
port: 465 port: 465
#项目属性 #项目属性
gogirl: gogirl:
#充值回调地址 #充值回调地址
...@@ -92,9 +94,11 @@ gogirl: ...@@ -92,9 +94,11 @@ gogirl:
#评论延迟时间 #评论延迟时间
test-paper-time: 1440 test-paper-time: 1440
#后台后端接口访问地址 #后台后端接口访问地址
admin-backend-url: http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage admin-backend-url: http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage、
#
admin-backend-achievements-url: http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi admin-backend-achievements-url: http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi
#
enterprise-wechat-webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
wx: wx:
pay: pay:
appId: wx058b46db3cd0e979 appId: wx058b46db3cd0e979
......
...@@ -93,10 +93,11 @@ gogirl: ...@@ -93,10 +93,11 @@ gogirl:
#评论延迟时间 #评论延迟时间
test-paper-time: 1 test-paper-time: 1
#后台后端接口访问地址 #后台后端接口访问地址
admin-backend-url: http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage admin-backend-url: "http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage"
admin-backend-achievements-url: http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi admin-backend-achievements-url: "http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi"
enterprise-wechat-webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
wx: wx:
pay: pay:
appId: wx058b46db3cd0e979 appId: wx058b46db3cd0e979
......
...@@ -94,7 +94,7 @@ gogirl: ...@@ -94,7 +94,7 @@ gogirl:
#后台后端接口访问地址 #后台后端接口访问地址
admin-backend-url: http://admin.begogirls.com:7712/api/ReportTable/GetTechnicianPageApi admin-backend-url: http://admin.begogirls.com:7712/api/ReportTable/GetTechnicianPageApi
admin-backend-achievements-url: http://admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi admin-backend-achievements-url: http://admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi
enterprise-wechat-webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
wx: wx:
pay: pay:
appId: wx058b46db3cd0e979 appId: wx058b46db3cd0e979
......
...@@ -67,6 +67,7 @@ spring: ...@@ -67,6 +67,7 @@ spring:
required: true required: true
port: 465 port: 465
#项目属性 #项目属性
gogirl: gogirl:
#充值回调地址 #充值回调地址
...@@ -94,7 +95,7 @@ gogirl: ...@@ -94,7 +95,7 @@ gogirl:
#后台后端接口访问地址 #后台后端接口访问地址
admin-backend-url: http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage admin-backend-url: http://test.admin.begogirls.com:7712/api/ReportTable/GetTechnicianPage
admin-backend-achievements-url: http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi admin-backend-achievements-url: http://test.admin.begogirls.com:7712/api/salary/AchievementsPersonaResultPageApi
enterprise-wechat-webhook: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa"
wx: wx:
pay: pay:
appId: wx058b46db3cd0e979 appId: wx058b46db3cd0e979
......
...@@ -18,31 +18,7 @@ ...@@ -18,31 +18,7 @@
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<contextName>${contextName}</contextName> <contextName>${contextName}</contextName>
   
<property name="smtpHost" value="smtp.exmail.qq.com"/>
<property name="username" value="name@new4g.cn"/>
<property name="email_to" value="name@new4g.cn"/>
<property name="password" value="ykglyxhfwurjbjbi"/>
<property name="SSL" value="fasle"/>
<property name="email_subject" value="服务器日志报错"/>
<!--邮件-->    
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"> 
        <smtpHost>${smtpHost}</smtpHost>  
        <Username>${username}</Username>  
        <Password>${password}</Password>  
        <SSL>${SSL}</SSL>  
        <to>${email_to}</to>  
        <from>${username}</from>  
        <subject>${email_subject}</subject>  
<asynchronousSending>true</asynchronousSending>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %X{ip}  %-5level %logger{35} - %message%n</pattern>
</layout>
       
</appender>
<!-- info日志 appender --> <!-- info日志 appender -->
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志回滚策略--> <!--日志回滚策略-->
...@@ -50,10 +26,10 @@ ...@@ -50,10 +26,10 @@
<!-- 按天回滚 daily --> <!-- 按天回滚 daily -->
<fileNamePattern>${LOG_HOME}/${contextName}-info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/${contextName}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 30天 --> <!-- 日志最大的历史 30天 -->
<maxHistory>30</maxHistory> <maxHistory>3</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset> <charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder> </encoder>
...@@ -69,10 +45,10 @@ ...@@ -69,10 +45,10 @@
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-warn.%d{yyyy-MM-dd}.log</FileNamePattern> <FileNamePattern>${LOG_HOME}/${contextName}-warn.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>3</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern> <pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset> <charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
...@@ -86,10 +62,10 @@ ...@@ -86,10 +62,10 @@
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/${contextName}-error.%d{yyyy-MM-dd}.log</FileNamePattern> <FileNamePattern>${LOG_HOME}/${contextName}-error.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>3</maxHistory>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern> <pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset> <charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
......
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