Pārlūkot izejas kodu

发送、撤回信息

qinchao 4 gadi atpakaļ
vecāks
revīzija
7ab3a20056

+ 4 - 5
examcloud-core-examwork-api-provider/src/main/java/cn/com/qmth/examcloud/core/examwork/api/controller/NoticeController.java

@@ -94,11 +94,10 @@ public class NoticeController extends ControllerSupport {
         noticeService.updateNotice(info);
     }
 
-    @ApiOperation(value = "撤回信息")
-    @PostMapping("backMsg")
-    public void backMsg(@Validated @RequestBody UpdateNoticeDomain updateNoticeDomain) {
-        UpdateNoticeInfo info = getUpdateNoticeInfoFrom(updateNoticeDomain);
-        noticeService.backMsg(info);
+    @ApiOperation(value = "发送、撤回信息")
+    @GetMapping("sendMsg/{status}/{id}")
+    public void backMsg(@PathVariable NoticeStatus status, @PathVariable Long id) {
+        noticeService.sendMsg(status, id);
     }
 
     @ApiOperation(value = "删除通知信息")

+ 2 - 1
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/NoticeService.java

@@ -7,6 +7,7 @@
 
 package cn.com.qmth.examcloud.core.examwork.service;
 
+import cn.com.qmth.examcloud.api.commons.enums.NoticeReceiverRuleType;
 import cn.com.qmth.examcloud.api.commons.enums.NoticeStatus;
 import cn.com.qmth.examcloud.api.commons.exchange.PageInfo;
 import cn.com.qmth.examcloud.api.commons.security.bean.UserType;
@@ -102,5 +103,5 @@ public interface NoticeService {
      */
     void updateNoticeStatus(Long noticeId, NoticeStatus noticeStatus);
 
-    void backMsg(UpdateNoticeInfo info);
+    void sendMsg(NoticeStatus status, Long id);
 }

+ 22 - 20
examcloud-core-examwork-service/src/main/java/cn/com/qmth/examcloud/core/examwork/service/impl/NoticeServiceImpl.java

@@ -301,27 +301,29 @@ public class NoticeServiceImpl implements NoticeService {
     }
 
     @Override
-    public void backMsg(UpdateNoticeInfo info) {
-        // 校验通知状态,只能撤回已经发送的消息
-        NoticeEntity originalNotice = GlobalHelper.getEntity(noticeRepo, info.getId(),
-                NoticeEntity.class);
-        if (originalNotice == null) {
-            throw new StatusException("501006", "找不到通知id为:" + info.getId() + "的数据");
-        }
-        if (originalNotice.getNoticeStatus() != NoticeStatus.PUBLISHED) {
-            throw new StatusException("501008", "只能撤回已经发送的消息");
+    public void sendMsg(NoticeStatus status, Long id) {
+        Optional<NoticeEntity> optional = noticeRepo.findById(id);
+        if(optional.isPresent()){
+            NoticeEntity entity = optional.get();
+            entity.setNoticeStatus(status);
+            entity.setUpdateTime(new Date());
+
+            //根据noticeId删除用户通知记录
+            if(NoticeStatus.DRAFT.equals(status)){
+                if (entity.getNoticeStatus() != NoticeStatus.PUBLISHED) {
+                    throw new StatusException("501008", "只能撤回已经发送的消息");
+                } else {
+                    userNoticeRepo.deleteByNoticeId(id);
+                }
+            } else if (NoticeStatus.TO_BE_PUBLISHED.equals(status)){
+                if (entity.getNoticeStatus() != NoticeStatus.DRAFT) {
+                    throw new StatusException("501008", "只能发送未发布的消息");
+                }
+            }
+            noticeRepo.save(entity);
+        } else {
+            throw new StatusException("501006", "找不到通知id为:" + id + "的数据");
         }
-
-        // 更新通知表
-        originalNotice.setTitle(info.getTitle());
-        originalNotice.setPublisher(info.getPublisher());
-        originalNotice.setNoticeStatus(NoticeStatus.DRAFT);
-        originalNotice.setContent(info.getContent());
-        originalNotice.setUpdateTime(new Date());
-        noticeRepo.save(originalNotice);
-
-        //根据noticeId删除用户通知记录
-        userNoticeRepo.deleteByNoticeId(info.getId());
     }
 
     /**