Commit 259bd2d5 by chentianzhong

外部接口

parent 107746a6
...@@ -2,7 +2,6 @@ package com.zq.email.controller; ...@@ -2,7 +2,6 @@ package com.zq.email.controller;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.utils.TokenUtils; import com.zq.common.utils.TokenUtils;
import com.zq.common.vo.OnlineUserDto; import com.zq.common.vo.OnlineUserDto;
......
...@@ -2,6 +2,9 @@ package com.zq.email.feign; ...@@ -2,6 +2,9 @@ package com.zq.email.feign;
import com.zq.common.annotation.AnonymousAccess; import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.annotation.Log; import com.zq.common.annotation.Log;
import com.zq.common.annotation.rest.AnonymousGetMapping;
import com.zq.common.annotation.rest.AnonymousPostMapping;
import com.zq.common.utils.AssertUtils;
import com.zq.common.vo.CustomerUserVo; import com.zq.common.vo.CustomerUserVo;
import com.zq.common.vo.OnlineUserDto; import com.zq.common.vo.OnlineUserDto;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
...@@ -57,4 +60,18 @@ public interface AdminFeignClient { ...@@ -57,4 +60,18 @@ public interface AdminFeignClient {
@Log("获取指定人员")
@ApiOperation("获取指定人员")
@AnonymousGetMapping("/users/getUserById/{userId}")
CustomerUserVo getUserById(@PathVariable Long userId);
@ApiOperation("根据人员标识查询用户")
@AnonymousPostMapping("/getBypCode/{pCode}")
ResultVo<CustomerUserVo> getBypCode(@PathVariable String pCode);
} }
...@@ -74,6 +74,16 @@ public class AdminFeignFallbackFactory implements FallbackFactory<AdminFeignClie ...@@ -74,6 +74,16 @@ public class AdminFeignFallbackFactory implements FallbackFactory<AdminFeignClie
return ResultVo.fail("admin服务调用异常-->getBySystemTag异常"); return ResultVo.fail("admin服务调用异常-->getBySystemTag异常");
} }
@Override
public CustomerUserVo getUserById(Long userId) {
return null;
}
@Override
public ResultVo<CustomerUserVo> getBypCode(String pCode) {
return ResultVo.fail("admin服务调用异常-->get> getBypCode异常");
}
}; };
} }
......
...@@ -26,9 +26,9 @@ public interface IEmailContentService extends IService<EmailContent> { ...@@ -26,9 +26,9 @@ public interface IEmailContentService extends IService<EmailContent> {
EmailContent saveContent(EmailEditVo vo, OnlineUserDto adminContext); EmailContent saveContent(EmailEditVo vo, OnlineUserDto adminContext);
EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo data, List<Long> receiveIds); EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo formVo, List<Long> receiveIds);
EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formUser); EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formVo);
void setTaskEmail(EmailTaskVo vo); void setTaskEmail(EmailTaskVo vo);
......
...@@ -46,11 +46,17 @@ public interface IEmailPersonService extends IService<EmailPerson> { ...@@ -46,11 +46,17 @@ public interface IEmailPersonService extends IService<EmailPerson> {
EmailPerson saveEmailSender(OnlineUserDto userDto, EmailContent content, Long folderId, Integer isSend); EmailPerson saveEmailSender(OnlineUserDto userDto, EmailContent content, Long folderId, Integer isSend);
//保存发件人2 //保存发件人2
EmailPerson saveEmailSender(CustomerUserVo userVo, EmailContent content, Long folderId, Integer isSend); EmailPerson saveEmailSender2(UserDto userVo, EmailContent content, Long folderId, Integer isSend);
//保存发件人3
EmailPerson saveEmailSender3(CustomerUserVo userVo, EmailContent content, Long folderId, Integer isSend);
//保存收件人 //保存收件人
void saveEmailReceiver(List<UserDto> receiverList, EmailContent content, Long folderId, Integer isPerson, Integer isSend); void saveEmailReceiver(List<UserDto> receiverList, EmailContent content, Long folderId, Integer isPerson, Integer isSend);
//保存收件人2
void saveEmailReceiver2(List<CustomerUserVo> receiverList, EmailContent content, Long folderId, Integer isPerson, Integer isSend);
//移动邮件到文件夹 //移动邮件到文件夹
void moveEmailFolder(EmailFolderMoveVo vo); void moveEmailFolder(EmailFolderMoveVo vo);
......
...@@ -96,14 +96,14 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -96,14 +96,14 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
} }
@Override @Override
public EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo data, List<Long> receiveIds) { public EmailContent saveContentApi(ApiSendEmailVo emailVo, CustomerUserVo formVo, List<Long> receiveIds) {
EmailContent content = new EmailContent(); EmailContent content = new EmailContent();
content.setTitle(emailVo.getSubject()); content.setTitle(emailVo.getSubject());
content.setContent(emailVo.getContent()); content.setContent(emailVo.getContent());
content.setDegree(EmailDegreeEnum.DEGREE_COMMON.getKey()); content.setDegree(EmailDegreeEnum.DEGREE_COMMON.getKey());
content.setSendUserId(data.getUserId()); content.setSendUserId(formVo.getUserId());
content.setSendUserEmail(data.getUsername()); content.setSendUserEmail(formVo.getUsername());
content.setSendUserName(data.getNickName()); content.setSendUserName(formVo.getNickName());
content.setSendTime(LocalDateTime.now()); content.setSendTime(LocalDateTime.now());
content.setIsTask(WhetherEnum.NO.getKey()); content.setIsTask(WhetherEnum.NO.getKey());
...@@ -122,14 +122,14 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema ...@@ -122,14 +122,14 @@ public class EmailContentServiceImpl extends ServiceImpl<EmailContentMapper, Ema
} }
@Override @Override
public EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formUser) { public EmailContent saveContentApi2(EmailEditApiVo vo, CustomerUserVo formVo) {
EmailContent content = new EmailContent(); EmailContent content = new EmailContent();
content.setTitle(vo.getTitle()); content.setTitle(vo.getTitle());
content.setContent(vo.getContent()); content.setContent(vo.getContent());
content.setDegree(vo.getDegree()); content.setDegree(vo.getDegree());
content.setSendUserId(formUser.getUserId()); content.setSendUserId(formVo.getUserId());
content.setSendUserEmail(formUser.getUsername()); content.setSendUserEmail(formVo.getUsername());
content.setSendUserName(formUser.getNickName()); content.setSendUserName(formVo.getNickName());
content.setSendTime(LocalDateTime.now()); content.setSendTime(LocalDateTime.now());
content.setIsTask(vo.getIsTask()); content.setIsTask(vo.getIsTask());
content.setSmsRemind(vo.getIsSmsRemind()); content.setSmsRemind(vo.getIsSmsRemind());
......
...@@ -2,6 +2,7 @@ package com.zq.email.service.impl; ...@@ -2,6 +2,7 @@ package com.zq.email.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
...@@ -292,7 +293,28 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -292,7 +293,28 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
} }
@Override @Override
public EmailPerson saveEmailSender(CustomerUserVo userVo, EmailContent content, Long folderId, Integer isSend) { public EmailPerson saveEmailSender2(UserDto userVo, EmailContent content, Long folderId, Integer isSend) {
EmailPerson sender = EmailPerson.builder()
.emailContentId(content.getId())
.userId(userVo.getId())
.userEmail(userVo.getUsername())
.userName(userVo.getNickName())
.deptId(userVo.getDeptId())
.courtCode(userVo.getCourtCode())
.personType(EmailConstant.TYPE_EMAIL_SEND)
.sendTime(content.getSendTime())
.folderId(folderId)
.isRead(WhetherEnum.YES.getKey())
.isPerson(WhetherEnum.YES.getKey())
.isTask(content.getIsTask())
.isSend(isSend)
.build();
this.save(sender);
return sender;
}
@Override
public EmailPerson saveEmailSender3(CustomerUserVo userVo, EmailContent content, Long folderId, Integer isSend) {
EmailPerson sender = EmailPerson.builder() EmailPerson sender = EmailPerson.builder()
.emailContentId(content.getId()) .emailContentId(content.getId())
.userId(userVo.getUserId()) .userId(userVo.getUserId())
...@@ -339,6 +361,31 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -339,6 +361,31 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
} }
@Override @Override
public void saveEmailReceiver2(List<CustomerUserVo> receiverList, EmailContent content, Long folderId, Integer isPerson, Integer isSend) {
for (CustomerUserVo userVo : receiverList) {
EmailPerson receivePerson = EmailPerson.builder()
.emailContentId(content.getId())
.userId(userVo.getUserId())
.userEmail(userVo.getUsername())
.userName(userVo.getNickName())
.deptId(userVo.getDeptId())
.courtCode(userVo.getCourtCode())
.personType(EmailConstant.TYPE_EMAIL_RECEIVE)
.sendTime(content.getSendTime())
.folderId(folderId)
.isRead(WhetherEnum.NO.getKey())
.isPerson(isPerson)
.isTask(content.getIsTask())
.isSend(isSend)
.build();
if (isPerson.equals(WhetherEnum.NO.getKey())){
receivePerson.setDeptId(userVo.getDeptId());
}
this.save(receivePerson);
}
}
@Override
public void moveEmailFolder(EmailFolderMoveVo vo) { public void moveEmailFolder(EmailFolderMoveVo vo) {
List<EmailPerson> list = List<EmailPerson> list =
this.lambdaQuery() this.lambdaQuery()
...@@ -853,97 +900,111 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -853,97 +900,111 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
SystemInfo systemInfo = bySystemTag.getData(); SystemInfo systemInfo = bySystemTag.getData();
AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空"); AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空");
Set<UserDto> toUserSet = new LinkedHashSet<>(); Set<CustomerUserVo> toUserSet = new LinkedHashSet<>();
Set<Long> toUserIds= new LinkedHashSet<>(); Set<Long> toUserIds= new LinkedHashSet<>();
ResultVo<UserDto> fromVo = adminFeignClient.findByPCode(emailVo.getFrom_id()); ResultVo<CustomerUserVo> bypCode = adminFeignClient.getBypCode(emailVo.getFrom_id());
AssertUtils.isTrue(fromVo.isSuccess() || fromVo.getData()!=null,"找不到发件人的门户信息"); AssertUtils.isTrue(bypCode.isSuccess() || bypCode.getData()!=null,"找不到发件人的门户信息");
CustomerUserVo fromVo = bypCode.getData();
ResultVo<UserDto> toVo =adminFeignClient.findByPCode(emailVo.getTo_id()); ResultVo<CustomerUserVo> bypCode2 =adminFeignClient.getBypCode(emailVo.getTo_id());
AssertUtils.isTrue(toVo.isSuccess() || toVo.getData()!=null,"找不到收件人1的门户信息"); AssertUtils.isTrue(bypCode2.isSuccess() || bypCode2.getData()!=null,"找不到收件人1的门户信息");
toUserIds.add(toVo.getData().getId()); CustomerUserVo toVo = bypCode2.getData();
toUserSet.add(toVo.getData()); toUserIds.add(toVo.getUserId());
toUserSet.add(toVo);
if(StrUtil.isNotBlank(emailVo.getTo_id2())){ if(StrUtil.isNotBlank(emailVo.getTo_id2())){
ResultVo<UserDto> toVo2 = adminFeignClient.findByPCode(emailVo.getTo_id2()); ResultVo<CustomerUserVo> bypCode1 = adminFeignClient.getBypCode(emailVo.getTo_id2());
AssertUtils.isTrue(toVo2.isSuccess() || toVo2.getData()!=null,"找不到收件人2的门户信息"); AssertUtils.isTrue(bypCode1.isSuccess() || bypCode1.getData()!=null,"找不到收件人2的门户信息");
toUserIds.add(toVo2.getData().getId()); CustomerUserVo toVo2 = bypCode2.getData();
toUserSet.add(toVo2.getData()); toUserIds.add(toVo2.getUserId());
} toUserSet.add(toVo2);
}
// EmailContent content = emailContentService.saveContentApi(emailVo, fromVo.getData(), new ArrayList<>(toUserIds));
// EmailContent content = emailContentService.saveContentApi(emailVo, fromVo, new ArrayList<>(toUserIds));
// this.saveEmailSender(fromVo.getData(), content, EmailFolderEnum.FOLDER_ALREADY_SEND.getKey().longValue(), WhetherEnum.YES.getKey());
// //增加收件人 this.saveEmailSender3(fromVo, content, EmailFolderEnum.FOLDER_ALREADY_SEND.getKey().longValue(), WhetherEnum.YES.getKey());
// ArrayList<CustomerUserVo> toUserList = new ArrayList<>(toUserSet); //增加收件人
// this.saveEmailReceiver(toUserList, content, EmailFolderEnum.FOLDER_INBOX.getKey().longValue(), WhetherEnum.YES.getKey(), WhetherEnum.YES.getKey()); ArrayList<CustomerUserVo> toUserList = ListUtil.toList(toUserSet);
// //短信 this.saveEmailReceiver2(toUserList, content, EmailFolderEnum.FOLDER_INBOX.getKey().longValue(), WhetherEnum.YES.getKey(), WhetherEnum.YES.getKey());
// //smsUtil.sendBatchSms(toUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId()); //短信
// //代办 smsUtil.sendBatchSms2(toUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
// msgUtil.sendMsg(fromVo.getData().getNickName(), content, toUserList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey()); //代办
// return content; msgUtil.sendMsg3(fromVo.getNickName(), content, toUserList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
return null; return content;
} }
@Override @Override
public EmailContent sendEmailApi2(EmailEditApiVo vo) { public EmailContent sendEmailApi2(EmailEditApiVo vo) {
// ResultVo<SystemInfo> bySystemTag = this.adminFeignClient.getBySystemTag(EmailConstant.SYSTEM_TAG); ResultVo<SystemInfo> bySystemTag = this.adminFeignClient.getBySystemTag(EmailConstant.SYSTEM_TAG);
// AssertUtils.isTrue(bySystemTag.isSuccess(), "调用admin服务,获取业务系统异常"); AssertUtils.isTrue(bySystemTag.isSuccess(), "调用admin服务,获取业务系统异常");
// SystemInfo systemInfo = bySystemTag.getData(); SystemInfo systemInfo = bySystemTag.getData();
// AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空"); AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空");
//
// CustomerUserVo formUser = adminFeignClient.getUserById(vo.getSender()); CustomerUserVo byId = adminFeignClient.getUserById(vo.getSender());
// AssertUtils.notNull(formUser, "获取发送人失败:(sender="+vo.getSender()+")"); AssertUtils.isTrue(byId!=null , "获取发送人失败:(sender="+vo.getSender()+")");
// //邮件 //邮件
// EmailContent content = emailContentService.saveContentApi2(vo, formUser); EmailContent content = emailContentService.saveContentApi2(vo, byId);
// if (content !=null) { if (content !=null) {
// //person,先删除 //person,先删除
// this.lambdaUpdate().eq(EmailPerson::getEmailContentId, content.getId()).remove(); this.lambdaUpdate().eq(EmailPerson::getEmailContentId, content.getId()).remove();
// //发件人 //发件人
// this.saveEmailSender(formUser, content,EmailFolderEnum.FOLDER_ALREADY_SEND.getKey().longValue(), WhetherEnum.YES.getKey()); this.saveEmailSender3(byId, content,EmailFolderEnum.FOLDER_ALREADY_SEND.getKey().longValue(), WhetherEnum.YES.getKey());
// //收件人 //收件人
// if (CollectionUtil.isNotEmpty(vo.getReceiver())) { if (CollectionUtil.isNotEmpty(vo.getReceiver())) {
// List<CustomerUserVo> receiverList = new ArrayList<>(); List<CustomerUserVo> receiverList = new ArrayList<>();
// for (Long userId : vo.getReceiver()) { for (Long userId : vo.getReceiver()) {
// CustomerUserVo receiver = this.adminFeignClient.getUserById(userId); CustomerUserVo receiver = this.adminFeignClient.getUserById(userId);
// AssertUtils.notNull(receiver, "调用admin失败,根据userId获取人员接口异常"); AssertUtils.isTrue(receiver!=null, "调用admin失败,根据userId获取人员接口异常");
// receiverList.add(receiver); receiverList.add(receiver);
// } }
// if (CollectionUtil.isNotEmpty(receiverList)){ if (CollectionUtil.isNotEmpty(receiverList)){
// this.saveEmailReceiver(receiverList, content, EmailFolderEnum.FOLDER_INBOX.getKey().longValue(), WhetherEnum.YES.getKey(), WhetherEnum.YES.getKey()); this.saveEmailReceiver2(receiverList, content, EmailFolderEnum.FOLDER_INBOX.getKey().longValue(), WhetherEnum.YES.getKey(), WhetherEnum.YES.getKey());
// if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getSmsRemind().equals(WhetherEnum.YES.getKey())) { if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getSmsRemind().equals(WhetherEnum.YES.getKey())) {
// smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId()); smsUtil.sendBatchSms2(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
// } }
// if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getMessageRemind().equals(WhetherEnum.YES.getKey())) { if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getMessageRemind().equals(WhetherEnum.YES.getKey())) {
// msgUtil.sendMsg(formUser.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey()); msgUtil.sendMsg3(byId.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
// } }
// } }
// } }
//
// //收件部门人员 //收件部门人员
//
// if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())) { if (CollectionUtil.isNotEmpty(vo.getReceiveDeptList())) {
// List<CustomerUserVo> deptUserList = new ArrayList<>(); List<CustomerUserVo> deptUserList = new ArrayList<>();
// for (Long deptId : vo.getReceiveDeptList()) { for (Long deptId : vo.getReceiveDeptList()) {
// ResultVo<List<CustomerUserVo>> userByDeptId = adminFeignClient.getUserByDeptId(deptId); ResultVo<List<CustomerUserVo>> userByDeptId = adminFeignClient.getUserByDeptId(deptId);
// AssertUtils.isTrue(userByDeptId.isSuccess(), "调用admin失败,根据deptId获取人员接口异常"); AssertUtils.isTrue(userByDeptId.isSuccess(), "调用admin失败,根据deptId获取人员接口异常");
// deptUserList.addAll(userByDeptId.getData()); // deptUserList.add()
// } // for (CustomerUserVo userVo : userByDeptId.getData()) {
// // UserDto userDto = new UserDto();
// if (CollectionUtil.isNotEmpty(deptUserList)){ // userDto.setId(userVo.getUserId());
// this.saveEmailReceiver(deptUserList, content, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey().longValue(), WhetherEnum.NO.getKey(), WhetherEnum.YES.getKey()); // userDto.setUsername(userVo.getUsername());
// if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getSmsRemind().equals(WhetherEnum.YES.getKey())) { // userDto.setNickName(userVo.getNickName());
// smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId()); // userDto.setDeptId(userVo.getDeptId());
// } // userDto.setCourtCode(userVo.getCourtCode());
// if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getMessageRemind().equals(WhetherEnum.YES.getKey())) { // deptUserList.add(userDto);
// msgUtil.sendMsg(formUser.getNickName(), content, deptUserList, systemInfo, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey());
// }
// }
// }
// } // }
// return content;
return null;
deptUserList.addAll(userByDeptId.getData());
}
if (CollectionUtil.isNotEmpty(deptUserList)){
this.saveEmailReceiver2(deptUserList, content, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey().longValue(), WhetherEnum.NO.getKey(), WhetherEnum.YES.getKey());
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getSmsRemind().equals(WhetherEnum.YES.getKey())) {
smsUtil.sendBatchSms2(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
}
if (vo.getIsSend().equals(WhetherEnum.YES.getKey()) && content.getMessageRemind().equals(WhetherEnum.YES.getKey())) {
msgUtil.sendMsg3(byId.getNickName(), content, deptUserList, systemInfo, EmailFolderEnum.FOLDER_DEPT_INBOX.getKey());
}
}
}
}
return content;
} }
@Override @Override
......
...@@ -48,6 +48,25 @@ public class MsgUtil { ...@@ -48,6 +48,25 @@ public class MsgUtil {
} }
//发送消息和代办
@Async
public void sendMsg3(String sender, EmailContent content, List<CustomerUserVo> userVoList, SystemInfo systemInfo, Integer folderId) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("sender", sender);
params .put("senderId", content.getSendUserId());
params .put("nickName", sender);
params .put("title","您有一封新邮件提醒");
params .put("content", "请查收我的邮件!主题:"+content.getTitle()+"。");
params.put("userIdList", userVoList.stream().map(e->e.getUserId()).collect(Collectors.toList()));
params .put("businessId", content.getId());
params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?folderId="+folderId+"&contentId=" + content.getId());
log.warn("---发送内部消息打印内容: {}", JSONUtil.toJsonStr(params));
messageFeignClient.sendApi(params);
messageFeignClient.addToDoApi(params);
}
@Async @Async
public void sendMsg2(String sender, EmailContent content, List<Long> userIds, SystemInfo systemInfo, Integer folderId) { public void sendMsg2(String sender, EmailContent content, List<Long> userIds, SystemInfo systemInfo, Integer folderId) {
......
...@@ -59,6 +59,34 @@ public class SmsUtil { ...@@ -59,6 +59,34 @@ public class SmsUtil {
} }
} }
/**
* 发送批量短信
*
* @return
*/
@Async
public void sendBatchSms2(List<CustomerUserVo> userVoList, String content, Long contentId) {
String regex = "^1[3-9]\\d{9}";
StringBuffer sb = new StringBuffer();
for (CustomerUserVo userVo : userVoList) {
if (userVo!=null && StrUtil.isNotBlank(userVo.getPhone()) && userVo.getPhone().matches(regex)){
sb.append(userVo.getPhone()).append(",");
}
}
if (sb.length() >0) {
Map<String, Object> map = new HashMap<>();
map.put("phones", Base64.encode(sb.toString().getBytes()));
map.put("fromId", Base64.encode("oa_email".getBytes()));
map.put("content", Base64.encode(content.getBytes()));
map.put("isReply", Base64.encode("0".getBytes()));
String param = JSONUtil.toJsonStr(map);
sendRequest(Base64.encode(param.getBytes()), contentId);
}
}
private void sendRequest(String content, Long contentId) { private void sendRequest(String content, Long contentId) {
log.debug("发送短信请求 => 邮件标识:{},请求地址:{}", contentId, smsProperties.getUrl()); log.debug("发送短信请求 => 邮件标识:{},请求地址:{}", contentId, smsProperties.getUrl());
......
...@@ -14,8 +14,6 @@ spring: ...@@ -14,8 +14,6 @@ spring:
eureka: eureka:
instance: instance:
prefer-ip-address: true prefer-ip-address: true
lease-renewal-interval-in-seconds: 30 #服务续约(renew)的间隔,默认为30秒
lease-expiration-duration-in-seconds: 90 #服务失效时间,默认值90秒
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
client: client:
serviceUrl: serviceUrl:
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration> <configuration>
<!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- 项目名称也是主要日志文件名 -->
<property name="PROJECT_NAME" value="email"/>
<!-- 日志目录 -->
<property name="LOG_PATH" value="/data/logs/${LOG_PATH:-${PROJECT_NAME}}"/>
<!-- 日志格式 -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n"/>
<!-- the name of the application's logging context -->
<!-- by default each JMXConfigurator instance will be registered under the same name in the same JVM -->
<!-- we need to set the contextName for different apps, so that the jmxconfigurator won't collide -->
<contextName>${PROJECT_NAME}</contextName>
<jmxConfigurator/>
<!--主要日志配置 开始--> <contextName>logback</contextName>
<appender name="SIZED_ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <property name="log.path" value="/data/logs/${LOG_PATH:-${PROJECT_NAME}}"/>
<!--主要日志文件名-->
<property name="default_log_file" value="email"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
<file>${LOG_PATH}/${PROJECT_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${PROJECT_NAME}/${PROJECT_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 -->
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender> </appender>
<!-- 异步输出 -->
<appender name="MAIN-LOGGER-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="SIZED_ROLLING_FILE"/>
</appender>
<!--主要日志配置 结束-->
<!--DEBUG日志配置 开始--> <!--输出到文件-->
<!-- 时间滚动输出 level为 DEBUG 日志 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_debug.log</file>
<!--日志文件输出格式-->
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder> </encoder>
<file>${LOG_PATH}/debug.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/debug/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志归档 -->
<fileNamePattern>${log.path}/debug/${default_log_file}-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 --> <!--日志文件保留天数-->
<maxHistory>15</maxHistory> <maxHistory>15</maxHistory>
</rollingPolicy> </rollingPolicy>
<!-- 此日志文件只记录ERROR级别的 --> <!-- 此日志文件只记录debug级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level> <level>debug</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 异步输出 -->
<appender name="DEBUG-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="DEBUG_FILE"/>
</appender>
<!--DEBUG日志配置 结束-->
<!--INFO日志配置 开始--> <!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_info.log</file>
<!--日志文件输出格式-->
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
<file>${LOG_PATH}/info.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/info/${default_log_file}-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 --> <!--日志文件保留天数-->
<maxHistory>15</maxHistory> <maxHistory>15</maxHistory>
</rollingPolicy> </rollingPolicy>
<!-- 此日志文件只记录ERROR级别的 --> <!-- 此日志文件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level> <level>info</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 异步输出 -->
<appender name="INFO-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="INFO_FILE"/>
</appender>
<!--INFO日志配置 结束-->
<!--WARN日志配置 开始--> <!-- 时间滚动输出 level为 WARN 日志 -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_warn.log</file>
<!--日志文件输出格式-->
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder> </encoder>
<file>${LOG_PATH}/warn.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/warn/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${log.path}/warn/${default_log_file}-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 --> <!--日志文件保留天数-->
<maxHistory>15</maxHistory> <maxHistory>15</maxHistory>
</rollingPolicy> </rollingPolicy>
<!-- 此日志文件只记录ERROR级别的 --> <!-- 此日志文件只记录warn级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level> <level>warn</level>
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 异步输出 -->
<appender name="WARN-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="WARN_FILE"/>
</appender>
<!--WARN日志配置 结束-->
<!--ERROR错误日志配置 开始-->
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 --> <!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_PATH}/error.log</file> <file>${log.path}/log_error.log</file>
<!--日志文件输出格式--> <!--日志文件输出格式-->
<encoder> <encoder>
<pattern>${LOG_PATTERN}</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 --> <charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder> </encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 --> <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <fileNamePattern>${log.path}/error/${default_log_file}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数--> <!--日志文件保留天数-->
<maxHistory>15</maxHistory> <maxHistory>15</maxHistory>
...@@ -169,33 +134,18 @@ ...@@ -169,33 +134,18 @@
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<!-- 异步输出 -->
<appender name="ERROR-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ERROR_FILE"/>
</appender>
<!--ERROR错误日志配置 结束-->
<root level="INFO"> <root level="info">
<!-- 控制台日志输出 -->
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>
<!-- 全部日志不区分级别 --> <appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="MAIN-LOGGER-APPENDER"/> <appender-ref ref="INFO_FILE"/>
<!-- 区分日志级别 --> <appender-ref ref="WARN_FILE"/>
<appender-ref ref="DEBUG-APPENDER"/> <appender-ref ref="ERROR_FILE"/>
<appender-ref ref="INFO-APPENDER"/>
<appender-ref ref="WARN-APPENDER"/>
<appender-ref ref="ERROR-APPENDER"/>
</root> </root>
<logger name="com.zq.message" level="DEBUG"/>
<!--开发环境:打印控制台-->
<springProfile name="!dev"> <springProfile name="!dev">
<logger name="com.zq.message.mapper" level="INFO"/> <logger name="com.zq" level="info"/>
</springProfile> </springProfile>
</configuration> </configuration>
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