From bf10f048231e8048be193faf26b09c833aededcf Mon Sep 17 00:00:00 2001 From: yh2013sh <419907179@qq.com> Date: Wed, 28 Mar 2018 14:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E8=AF=BB=E5=8F=96=E5=90=8E?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E7=9B=AE=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bootdo/common/utils/DateUtils.java | 2 +- .../oa/controller/NotifyController.java | 2 +- .../oa/service/NotifyRecordService.java | 5 -- .../com/bootdo/oa/service/NotifyService.java | 7 +++ .../service/impl/NotifyRecordServiceImpl.java | 5 -- .../oa/service/impl/NotifyServiceImpl.java | 62 ++++++++++++------- .../static/js/appjs/oa/notify/read.js | 49 --------------- .../static/js/appjs/oa/notify/selfNotify.js | 7 ++- .../main/resources/templates/index_v1.html | 8 ++- .../resources/templates/oa/notify/read.html | 4 +- 10 files changed, 60 insertions(+), 91 deletions(-) delete mode 100644 bootdo/src/main/resources/static/js/appjs/oa/notify/read.js diff --git a/bootdo/src/main/java/com/bootdo/common/utils/DateUtils.java b/bootdo/src/main/java/com/bootdo/common/utils/DateUtils.java index c89866f..c651d4d 100644 --- a/bootdo/src/main/java/com/bootdo/common/utils/DateUtils.java +++ b/bootdo/src/main/java/com/bootdo/common/utils/DateUtils.java @@ -52,7 +52,7 @@ public class DateUtils { r += hour + "小时"; } else if (min > 0) { r += min + "分"; - } else if (s > 0) { + } else if (s >= 0) { r += s + "秒"; } r += "前"; diff --git a/bootdo/src/main/java/com/bootdo/oa/controller/NotifyController.java b/bootdo/src/main/java/com/bootdo/oa/controller/NotifyController.java index 2a3894c..7d2fff5 100644 --- a/bootdo/src/main/java/com/bootdo/oa/controller/NotifyController.java +++ b/bootdo/src/main/java/com/bootdo/oa/controller/NotifyController.java @@ -178,7 +178,7 @@ public class NotifyController extends BaseController { notifyRecordDO.setUserId(getUserId()); notifyRecordDO.setReadDate(new Date()); notifyRecordDO.setIsRead(Constant.OA_NOTIFY_READ_YES); - notifyRecordService.changeRead(notifyRecordDO); + notifyService.changeRead(notifyRecordDO); model.addAttribute("notify", notify); return "oa/notify/read"; } diff --git a/bootdo/src/main/java/com/bootdo/oa/service/NotifyRecordService.java b/bootdo/src/main/java/com/bootdo/oa/service/NotifyRecordService.java index 29117ce..12e05da 100644 --- a/bootdo/src/main/java/com/bootdo/oa/service/NotifyRecordService.java +++ b/bootdo/src/main/java/com/bootdo/oa/service/NotifyRecordService.java @@ -28,9 +28,4 @@ public interface NotifyRecordService { int batchRemove(Long[] ids); - /** - * 更改阅读状态 - * @return - */ - int changeRead(NotifyRecordDO notifyRecord); } diff --git a/bootdo/src/main/java/com/bootdo/oa/service/NotifyService.java b/bootdo/src/main/java/com/bootdo/oa/service/NotifyService.java index a040d17..35f0837 100644 --- a/bootdo/src/main/java/com/bootdo/oa/service/NotifyService.java +++ b/bootdo/src/main/java/com/bootdo/oa/service/NotifyService.java @@ -2,6 +2,7 @@ package com.bootdo.oa.service; import com.bootdo.common.utils.PageUtils; import com.bootdo.oa.domain.NotifyDO; +import com.bootdo.oa.domain.NotifyRecordDO; import java.util.List; import java.util.Map; @@ -32,4 +33,10 @@ public interface NotifyService { // Map message(Long userId); PageUtils selfList(Map map); + + /** + * 更改阅读状态 + * @return + */ + void changeRead(NotifyRecordDO notifyRecord); } diff --git a/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyRecordServiceImpl.java b/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyRecordServiceImpl.java index 0bc6dbe..7309610 100644 --- a/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyRecordServiceImpl.java +++ b/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyRecordServiceImpl.java @@ -52,9 +52,4 @@ public class NotifyRecordServiceImpl implements NotifyRecordService { return notifyRecordDao.batchRemove(ids); } - @Override - public int changeRead(NotifyRecordDO notifyRecord) { - return notifyRecordDao.changeRead(notifyRecord); - } - } diff --git a/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyServiceImpl.java b/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyServiceImpl.java index cd22b86..58041f7 100644 --- a/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyServiceImpl.java +++ b/bootdo/src/main/java/com/bootdo/oa/service/impl/NotifyServiceImpl.java @@ -1,19 +1,5 @@ package com.bootdo.oa.service.impl; -import com.bootdo.system.domain.UserDO; -import com.bootdo.system.service.SessionService; -import org.apache.shiro.session.Session; -import org.apache.shiro.session.mgt.eis.SessionDAO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - import com.bootdo.common.service.DictService; import com.bootdo.common.utils.DateUtils; import com.bootdo.common.utils.PageUtils; @@ -24,6 +10,19 @@ import com.bootdo.oa.domain.NotifyDTO; import com.bootdo.oa.domain.NotifyRecordDO; import com.bootdo.oa.service.NotifyService; import com.bootdo.system.dao.UserDao; +import com.bootdo.system.domain.UserDO; +import com.bootdo.system.service.SessionService; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.simp.SimpMessagingTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.*; @Service public class NotifyServiceImpl implements NotifyService { @@ -79,15 +78,15 @@ public class NotifyServiceImpl implements NotifyService { } recordDao.batchSave(records); //给在线用户发送通知 - ThreadPoolExecutor executor = new ThreadPoolExecutor(1,1,0, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<>()); - executor.execute(new Runnable() { - @Override - public void run() { - for (UserDO userDO : sessionService.listOnlineUser()) { - for (Long userId : userIds) { - if (userId.equals(userDO.getUserId())) { - template.convertAndSendToUser(userDO.toString(), "/queue/notifications", "新消息:" + notify.getTitle()); - } + ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("SendNotify-%d").build(); + ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, + 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), threadFactory); + executor.execute(() -> { + for (UserDO userDO : sessionService.listOnlineUser()) { + for (Long userId : userIds) { + if (userId.equals(userDO.getUserId())) { + template.convertAndSendToUser(userDO.toString(), "/queue/notifications", + "新消息:" + notify.getTitle()); } } } @@ -127,4 +126,21 @@ public class NotifyServiceImpl implements NotifyService { return page; } + @Override + public void changeRead(NotifyRecordDO notifyRecord) { + recordDao.changeRead(notifyRecord); + //给在线用户发送通知 + ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("ConsumeNotify-%d").build(); + ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, + 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), threadFactory); + executor.execute(() -> { + for (UserDO userDO : sessionService.listOnlineUser()) { + if (notifyRecord.getUserId().equals(userDO.getUserId())) { + template.convertAndSendToUser(userDO.toString(), "/queue/notifications", "消费新消息"); + } + } + }); + executor.shutdown(); + } + } diff --git a/bootdo/src/main/resources/static/js/appjs/oa/notify/read.js b/bootdo/src/main/resources/static/js/appjs/oa/notify/read.js deleted file mode 100644 index cc21f02..0000000 --- a/bootdo/src/main/resources/static/js/appjs/oa/notify/read.js +++ /dev/null @@ -1,49 +0,0 @@ -$().ready(function() { - validateRule(); -}); - -$.validator.setDefaults({ - submitHandler : function() { - update(); - } -}); -function update() { - $.ajax({ - cache : true, - type : "POST", - url : "/oa/notify/update", - data : $('#signupForm').serialize(),// 你的formid - async : false, - error : function(request) { - parent.layer.alert("Connection error"); - }, - success : function(data) { - if (data.code == 0) { - parent.layer.msg("操作成功"); - parent.reLoad(); - var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引 - parent.layer.close(index); - - } else { - parent.layer.alert(data.msg) - } - - } - }); - -} -function validateRule() { - var icon = " "; - $("#signupForm").validate({ - rules : { - name : { - required : true - } - }, - messages : { - name : { - required : icon + "请输入名字" - } - } - }) -} \ No newline at end of file diff --git a/bootdo/src/main/resources/static/js/appjs/oa/notify/selfNotify.js b/bootdo/src/main/resources/static/js/appjs/oa/notify/selfNotify.js index ba11741..d617c1e 100644 --- a/bootdo/src/main/resources/static/js/appjs/oa/notify/selfNotify.js +++ b/bootdo/src/main/resources/static/js/appjs/oa/notify/selfNotify.js @@ -155,7 +155,12 @@ function read(id) { maxmin : true, shadeClose : false, // 点击遮罩关闭层 area : [ '800px', '520px' ], - content : prefix + '/read/' + id // iframe的url + content : prefix + '/read/' + id , // iframe的url + cancel : function(){ + reLoad(); + var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引 + layer.close(index); + } }); } function remove(id) { diff --git a/bootdo/src/main/resources/templates/index_v1.html b/bootdo/src/main/resources/templates/index_v1.html index eef180c..6bf279c 100644 --- a/bootdo/src/main/resources/templates/index_v1.html +++ b/bootdo/src/main/resources/templates/index_v1.html @@ -1,5 +1,5 @@ - + @@ -102,7 +102,7 @@