Commit 827fd30d by chentianzhong

提一个版本

parent 9af12362
package com.zq.email.controller; package com.zq.email.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.zq.common.annotation.AnonymousAccess;
import com.zq.common.utils.AssertUtils; import com.zq.common.utils.AssertUtils;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import com.zq.email.entity.EmailAttach;
import com.zq.email.entity.EmailContent; import com.zq.email.entity.EmailContent;
import com.zq.email.entity.EmailPerson; import com.zq.email.entity.EmailPerson;
import com.zq.email.service.IEmailAttachService; import com.zq.email.service.IEmailAttachService;
...@@ -11,11 +16,14 @@ import io.swagger.annotations.Api; ...@@ -11,11 +16,14 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
/** /**
* <p> * <p>
...@@ -33,6 +41,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -33,6 +41,8 @@ import org.springframework.web.bind.annotation.RestController;
public class EmailAttachController { public class EmailAttachController {
private final IEmailAttachService emailAttachService; private final IEmailAttachService emailAttachService;
@Value("${spring.cloud.config.profile")
private String profile;
@ApiOperation("获取附件") @ApiOperation("获取附件")
@PostMapping @PostMapping
...@@ -40,4 +50,46 @@ public class EmailAttachController { ...@@ -40,4 +50,46 @@ public class EmailAttachController {
AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId"); AssertUtils.notNull(vo.getContentId(), "缺少参数:contentId");
return ResultVo.success(emailAttachService.findByContentId(vo.getContentId())); return ResultVo.success(emailAttachService.findByContentId(vo.getContentId()));
} }
@ApiOperation("下载附件")
@AnonymousAccess
@GetMapping("/download/{id}")
public void download(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") String id) {
EmailAttach emailAttach = emailAttachService.getById(id);
AssertUtils.notNull(emailAttach, "获取附件信息失败");
String download = emailAttach.getDownloadPath();
if (StrUtil.isBlank(download)){
String year = DateUtil.format(emailAttach.getSendTime(), "yyyy");
String yearMonth = DateUtil.format(emailAttach.getSendTime(), "yyyyMM");
String yearMonthDate = DateUtil.format(emailAttach.getSendTime(), "yyyyMMdd");
String path = "/" + year + "/" + yearMonth + "/" + yearMonthDate + "/" + emailAttach.getAttachId() + "/" + emailAttach.getAttachName();
if (profile.equals("product") || profile.equals("test")) {
download = "http://147.1.3.87/attwjsf_email" + path;
}else if (profile.equals("wanpro") || profile.equals("wantest")){
download = "http://172.28.1.159:82/attwjsf_yj" + path;
}
}
AssertUtils.hasText(download, "下载地址为空");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
OutputStream os = response.getOutputStream();
HttpUtil.download(download, outputStream, true);
byte[] bytes = outputStream.toByteArray();
response.reset();
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition",
"attachment;filename=" + new String(emailAttach.getAttachName().getBytes(StandardCharsets.UTF_8),
StandardCharsets.ISO_8859_1));
response.addHeader("Content-Length", "" + bytes.length);
os.write(bytes);
os.flush();
} catch (Exception e) {
log.error("下载文件失败:" + e.getLocalizedMessage(), e);
AssertUtils.isTrue(false, "网络异常,下载文件失败");
}
}
} }
...@@ -2,6 +2,7 @@ package com.zq.email.feign; ...@@ -2,6 +2,7 @@ package com.zq.email.feign;
import com.zq.common.vo.ResultVo; import com.zq.common.vo.ResultVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -41,7 +42,7 @@ public interface MessageFeignClient { ...@@ -41,7 +42,7 @@ public interface MessageFeignClient {
* @param params * @param params
* @return * @return
*/ */
@PostMapping("/web/delMessageBySystem") @DeleteMapping("/web/delMessageBySystem")
ResultVo revokeWebBySysInfo(@RequestBody Map<String, Object> params); ResultVo revokeWebBySysInfo(@RequestBody Map<String, Object> params);
/** /**
...@@ -51,7 +52,7 @@ public interface MessageFeignClient { ...@@ -51,7 +52,7 @@ public interface MessageFeignClient {
* @param params * @param params
* @return * @return
*/ */
@PostMapping("/todo/delMessageBySystem") @DeleteMapping("/todo/delMessageBySystem")
ResultVo revokeTodoBySysInfo(@RequestBody Map<String, Object> params); ResultVo revokeTodoBySysInfo(@RequestBody Map<String, Object> params);
} }
...@@ -174,7 +174,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -174,7 +174,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//增加收件人 //增加收件人
this.saveEmailReceiver(receiverList, content, vo); this.saveEmailReceiver(receiverList, content, vo);
//短信 //短信
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。", content.getId()); if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) {
smsUtil.sendBatchSms(receiverList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
}
} }
...@@ -183,7 +185,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -183,7 +185,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//增加收件部门 //增加收件部门
this.saveEmailReceiveDept(deptUserList, content, vo); this.saveEmailReceiveDept(deptUserList, content, vo);
//短信 //短信
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。", content.getId()); if (content.getSmsRemind()!=null && content.getSmsRemind() == 1) {
smsUtil.sendBatchSms(deptUserList, "您有一封新的邮件,标题为《" + content.getTitle() + "》。请及时查收。", content.getId());
}
} }
} }
...@@ -338,7 +342,8 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -338,7 +342,8 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
LambdaQueryWrapper<EmailPerson> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EmailPerson> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EmailPerson::getUserId, adminContext.getUserId()) queryWrapper.eq(EmailPerson::getUserId, adminContext.getUserId())
.eq( EmailPerson::getFolderId, vo.getFolderId()); .eq( EmailPerson::getFolderId, vo.getFolderId())
.eq( EmailPerson::getIsSend, WhetherEnum.YES.getKey());
//.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE); //.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE);
if (type.equals(WhetherEnum.YES.getKey())){ if (type.equals(WhetherEnum.YES.getKey())){
...@@ -367,6 +372,22 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -367,6 +372,22 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.in(EmailPerson::getId, vo.getPersonIdList()) .in(EmailPerson::getId, vo.getPersonIdList())
.set(EmailPerson::getIsSend, vo.getIsSend()) .set(EmailPerson::getIsSend, vo.getIsSend())
.update(); .update();
new Thread(() -> {
for (Long id : vo.getPersonIdList()) {
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("businessId", id);
log.info("撤回消息提醒: {}", JSONUtil.toJsonStr(params));
ResultVo resultVo = messageFeignClient.revokeWebBySysInfo(params);
log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo));
ResultVo resultVo1 = messageFeignClient.revokeTodoBySysInfo(params);
log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1));
}
}).start();
} }
@Override @Override
...@@ -377,17 +398,39 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -377,17 +398,39 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
.eq(EmailPerson::getIsRead, WhetherEnum.YES.getKey()) .eq(EmailPerson::getIsRead, WhetherEnum.YES.getKey())
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE).list(); .eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE).list();
AssertUtils.isTrue(CollectionUtil.isEmpty(list), "邮件已被收件人已读,无法撤回"); AssertUtils.isTrue(CollectionUtil.isEmpty(list), "邮件已被收件人已读,无法撤回");
//删除收件人
this.lambdaUpdate() List<EmailPerson> personList = this.lambdaQuery().eq(EmailPerson::getEmailContentId, contentId)
.eq(EmailPerson::getEmailContentId, contentId)
.eq(EmailPerson::getIsRead, WhetherEnum.NO.getKey()) .eq(EmailPerson::getIsRead, WhetherEnum.NO.getKey())
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE).remove(); .eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE).list();
//删除收件人
// if (CollectionUtil.isNotEmpty(personList)){
// this.removeByIds(personList);
// this.re
// }
// this.lambdaUpdate()
// .eq(EmailPerson::getEmailContentId, contentId)
// .eq(EmailPerson::getIsRead, WhetherEnum.NO.getKey())
// .eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_RECEIVE).remove();
//将发件人设置为未发送 //将发件人设置为未发送
this.lambdaUpdate() this.lambdaUpdate()
.eq(EmailPerson::getEmailContentId, contentId) .eq(EmailPerson::getEmailContentId, contentId)
.eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_SEND) .eq(EmailPerson::getPersonType, EmailConstant.TYPE_EMAIL_SEND)
.set(EmailPerson::getFolderId, EmailFolderEnum.FOLDER_OUTBOX.getKey()) .set(EmailPerson::getFolderId, EmailFolderEnum.FOLDER_OUTBOX.getKey())
.set(EmailPerson::getIsSend, WhetherEnum.NO.getKey()).update(); .set(EmailPerson::getIsSend, WhetherEnum.NO.getKey()).update();
//撤回消息和代办
for (EmailPerson person : personList) {
this.removeById(person.getId()); //删除收件人
Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("businessId", person.getId());
log.info("撤回消息提醒: {}", JSONUtil.toJsonStr(params));
ResultVo resultVo = messageFeignClient.revokeWebBySysInfo(params);
log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo));
ResultVo resultVo1 = messageFeignClient.revokeTodoBySysInfo(params);
log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1));
}
} }
@Override @Override
...@@ -541,21 +584,21 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -541,21 +584,21 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒 //内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){ if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
new Thread(new Runnable() { // new Thread(new Runnable() {
@Override // @Override
public void run() { // public void run() {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG); params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒"); params .put("title","您有一封新邮件提醒");
params .put("content", "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。"); params .put("content", "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。");
params.put("userIdList", Collections.singletonList(userVo.getUserId())); params.put("userIdList", Collections.singletonList(userVo.getUserId()));
params .put("businessId", receivePerson.getId()); params .put("businessId", receivePerson.getId());
params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?personId" + receivePerson.getId()); params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?personId=" + receivePerson.getId());
log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params)); log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params));
messageFeignClient .sendWebMessage(params); messageFeignClient .sendWebMessage(params);
messageFeignClient .addToDo(params); messageFeignClient .addToDo(params);
} // }
}); // });
} }
...@@ -590,21 +633,23 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email ...@@ -590,21 +633,23 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
//内部消息提醒 //内部消息提醒
if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){ if (content.getMessageRemind()!=null && content.getMessageRemind() == 1){
new Thread(new Runnable() { // new Thread(new Runnable() {
@Override // @Override
public void run() { // public void run() {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params .put("systemTag", EmailConstant.SYSTEM_TAG); params .put("systemTag", EmailConstant.SYSTEM_TAG);
params .put("title","您有一封新邮件提醒"); params .put("title","您有一封新邮件提醒");
params .put("content", "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。"); params .put("content", "您有一封新的邮件,标题为《"+content.getTitle()+"》。请及时查收。");
params.put("userIdList", Collections.singletonList(userVo.getUserId())); params.put("userIdList", Collections.singletonList(userVo.getUserId()));
params .put("businessId", receivePerson.getId()); params .put("businessId", receivePerson.getId());
params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/oaContent/index?personId=" + receivePerson.getId()); params.put("jumpUrl", systemInfo.getHomeUrl() + "/#/detail?personId=" + receivePerson.getId());
log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params)); log.info("发送内部短信内容打印: {}", JSONUtil.toJsonStr(params));
messageFeignClient .sendWebMessage(params); ResultVo resultVo = messageFeignClient.sendWebMessage(params);
messageFeignClient .addToDo(params); log.info("sendWebMessage: {}" + JSONUtil.toJsonStr(resultVo));
} ResultVo resultVo1 = messageFeignClient.addToDo(params);
}); log.info("addToDo: {}" + JSONUtil.toJsonStr(resultVo1));
// }
// });
} }
......
...@@ -48,7 +48,7 @@ public class SmsUtil { ...@@ -48,7 +48,7 @@ public class SmsUtil {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("phones", Base64.encode(sb.toString().getBytes())); map.put("phones", Base64.encode(sb.toString().getBytes()));
map.put("formId", Base64.encode("oa_email".getBytes())); map.put("fromId", Base64.encode("oa_email".getBytes()));
map.put("content", Base64.encode(content.getBytes())); map.put("content", Base64.encode(content.getBytes()));
map.put("isReply", Base64.encode("0".getBytes())); map.put("isReply", Base64.encode("0".getBytes()));
String param= JSONUtil.toJsonStr(map); String param= JSONUtil.toJsonStr(map);
......
...@@ -3,7 +3,7 @@ spring: ...@@ -3,7 +3,7 @@ spring:
redis: redis:
#数据库索引 #数据库索引
database: 0 database: 0
host: 127.0.0.1 host: 172.18.4.84
port: 6379 port: 6379
password: password:
#连接超时时间 #连接超时时间
......
...@@ -22,8 +22,8 @@ mybatis-plus: ...@@ -22,8 +22,8 @@ mybatis-plus:
db-config: db-config:
select-strategy: not_empty select-strategy: not_empty
update-strategy: not_empty update-strategy: not_empty
configuration: # configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#日志 #日志
logging: logging:
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
......
...@@ -4,7 +4,7 @@ spring: ...@@ -4,7 +4,7 @@ spring:
cloud: cloud:
config: config:
name: config name: config
profile: dev profile: ${spring.profiles.active}
discovery: discovery:
enabled: true enabled: true
service-id: CONFIG-SERVER service-id: CONFIG-SERVER
......
...@@ -168,11 +168,11 @@ ...@@ -168,11 +168,11 @@
--> -->
<logger name="org.springframework.boot.autoconfigure" level="error"/> <logger name="org.springframework.boot.autoconfigure" level="error"/>
<springProfile name="lcoal"> <springProfile name="local">
<logger name="com.zq" level="debug"/> <logger name="com.zq" level="info"/>
</springProfile> </springProfile>
<springProfile name="dev"> <springProfile name="dev">
<logger name="com.zq" level="debug"/> <logger name="com.zq" level="info"/>
</springProfile> </springProfile>
<springProfile name="test"> <springProfile name="test">
......
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