Ver código fonte

视频审核

孙永军 1 ano atrás
pai
commit
4222000cca

+ 26 - 0
src/main/java/com/sxtvs/open/api/review/controller/SseController.java

@@ -0,0 +1,26 @@
+package com.sxtvs.open.api.review.controller;
+
+import com.sxtvs.open.api.review.service.impl.SSEService;
+import com.sxtvs.open.core.auth.LoginRequired;
+import jakarta.annotation.Resource;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+@RestController
+@RequestMapping("/user")
+public class SseController {
+
+    @Resource
+    private SSEService sseService;
+
+    @GetMapping(path = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
+    @LoginRequired
+    public SseEmitter handleSse() {
+        SseEmitter sseEmitter = new SseEmitter(30_000L); // 设置超时时间
+        sseService.monitor(sseEmitter);
+        return sseEmitter;
+    }
+}

+ 2 - 0
src/main/java/com/sxtvs/open/api/review/entity/ReviewImgRecord.java

@@ -57,6 +57,8 @@ public class ReviewImgRecord implements Serializable {
     @TableField(exist = false)
     private String statusDesc;
 
+    private Integer pushStatus;
+
     public ImgReviewResp  getReviewResult() {
         return JSON.parseObject(this.result, ImgReviewResp.class);
     }

+ 2 - 0
src/main/java/com/sxtvs/open/api/review/entity/ReviewVideosRecord.java

@@ -59,6 +59,8 @@ public class ReviewVideosRecord implements Serializable {
     @TableField(exist = false)
     private VideoReviewResp reviewResult;
 
+    private Integer pushStatus;
+
     public VideoReviewResp getReviewResult() {
         return JSON.parseObject(this.result, VideoReviewResp.class);
     }

+ 9 - 2
src/main/java/com/sxtvs/open/api/review/service/impl/ReviewImgRecordServiceImpl.java

@@ -44,11 +44,14 @@ public class ReviewImgRecordServiceImpl extends ServiceImpl<ReviewImgRecordMappe
     @Resource
     private ThreadPoolExecutor threadPoolExecutor;
 
+    @Resource
+    private SSEService sseService;
+
     public ReviewImgRecord store(ReviewImgRecord reviewImgRecord) {
         Optional<String> token = HttpContextUtil.getToken();
 
-        String uid = AESUtil.decryptStr(token.get());
-        reviewImgRecord.setUid(Long.valueOf(uid));
+        Long uid = Long.valueOf(AESUtil.decryptStr(token.get()));
+        reviewImgRecord.setUid(uid);
         reviewImgRecord.setCreateTime(LocalDateTime.now());
         reviewImgRecord.setStatus("PROVISIONING");
         if(TextUtils.isEmpty(reviewImgRecord.getTitle())){
@@ -74,6 +77,10 @@ public class ReviewImgRecordServiceImpl extends ServiceImpl<ReviewImgRecordMappe
             reviewImgRecord.setResult(JSON.toJSONString(body));
             reviewImgRecord.setReviewResult(body);
             updateById(reviewImgRecord);
+            if(sseService.sendMsg(uid, "图片" + reviewImgRecord.getTitle() + "审核完成")){
+                reviewImgRecord.setPushStatus(1);
+                updateById(reviewImgRecord);
+            }
 
         });
 

+ 9 - 0
src/main/java/com/sxtvs/open/api/review/service/impl/ReviewVideosRecordServiceImpl.java

@@ -43,6 +43,9 @@ public class ReviewVideosRecordServiceImpl extends ServiceImpl<ReviewVideosRecor
     @Resource
     private OSSService  ossService;
 
+    @Resource
+    private SSEService sseService;
+
     public ReviewVideosRecord store(ReviewVideosRecord reviewVideosRecord) {
         Optional<String> token = HttpContextUtil.getToken();
 
@@ -95,6 +98,12 @@ public class ReviewVideosRecordServiceImpl extends ServiceImpl<ReviewVideosRecor
         reviewVideosRecord.setResult(JSON.toJSONString(body));
 
         updateById(reviewVideosRecord);
+
+        if(sseService.sendMsg(reviewVideosRecord.getUid(), "视频" + reviewVideosRecord.getTitle() + "审核完成")){
+            reviewVideosRecord.setPushStatus(1);
+            updateById(reviewVideosRecord);
+        }
+
     }
 
     public void refreshBatchResult(){

+ 48 - 0
src/main/java/com/sxtvs/open/api/review/service/impl/SSEService.java

@@ -0,0 +1,48 @@
+package com.sxtvs.open.api.review.service.impl;
+
+import com.sxtvs.open.core.advice.BizException;
+import com.sxtvs.open.core.auth.AESUtil;
+import com.sxtvs.open.core.auth.HttpContextUtil;
+import jakarta.annotation.Resource;
+import org.apache.http.util.TextUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Service
+public class SSEService {
+
+    @Resource
+    private ThreadPoolExecutor threadPoolExecutor;
+
+    private Map<Long, SseEmitter>  sseMap = new HashMap<>();
+
+    public void monitor(SseEmitter sseEmitter) {
+        Optional<String> token = HttpContextUtil.getToken();
+
+        if (token.isPresent()){
+            String uid = AESUtil.decryptStr(token.get());
+            sseMap.put(Long.valueOf(uid), sseEmitter);
+        }
+    }
+
+    public Boolean sendMsg(Long uid, String msg) {
+        if (sseMap.containsKey(uid)){
+
+            SseEmitter sseEmitter = sseMap.get(uid);
+            try {
+                sseEmitter.send(msg);
+                return true;
+            } catch (IOException e) {
+                throw new BizException("推送消息失败");
+            }
+        }
+        return false;
+
+    }
+}