459242451@qq.com преди 2 години
родител
ревизия
2a1171677c

+ 6 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhdd/DhController.java

@@ -53,6 +53,12 @@ public class DhController {
         return AjaxResult.success(dhService.getVideoToken(dhAccount, Constants.CACHE_DH_VIDEO_TOKEN));
     }
 
+    @ApiOperation("获取大华tokenV2.用于PC端业务")
+    @GetMapping("/test/getVideoToken")
+    public AjaxResult getTokenV2Fortest() {
+        return AjaxResult.success(dhService.getTestToken());
+    }
+
     /*@ApiOperation("video的token下线")
     @PostMapping("/offlineVideoToken")
     public AjaxResult offlineVideoToken() {

+ 1 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -161,6 +161,7 @@ public class Constants {
     public static final String CACHE_DH_TOKEN = "dh:token";
     // PC
     public static final String CACHE_DH_VIDEO_TOKEN = "dh:videotoken";
+    public static final String CACHE_DH_TEST_TOKEN = "dh:testtoken";
     // HD(大屏)
     public static final String CACHE_DH_VIDEO_HD_TOKEN = "dh:videotoken:hd";
     /**

+ 1 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -113,7 +113,7 @@
             AND date_format(u.create_time,'%y%m%d') <= date_format(#{user.params.endTime},'%y%m%d')
         </if>
         <if test='user.deptId != null and user.deptId != "0"'>
-            AND (u.dept_id = #{user.deptId} ) OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE #{user.deptId} = ANY(string_to_array(ancestors,',') ))
+            AND ((u.dept_id = #{user.deptId} ) OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE #{user.deptId} = ANY(string_to_array(ancestors,',') )))
         </if>
         <!-- 数据范围过滤 -->
         <if test="user.params.dataScope != null and user.params.dataScope != ''">

+ 6 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/IDhService.java

@@ -37,4 +37,10 @@ public interface IDhService {
 
     void offlineVideoToken(String key);
 
+    /**
+     * 用于大华测试的token
+     *
+     * @return
+     */
+    Map<String, Object> getTestToken();
 }

+ 66 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/DhServiceImpl.java

@@ -262,6 +262,72 @@ public class DhServiceImpl implements IDhService {
         RedisUtils.deleteObject(key);
     }
 
+    @Override
+    public Map<String, Object> getTestToken() {
+        Map<String, Object> token = RedisUtils.getCacheMap(Constants.CACHE_DH_TEST_TOKEN);
+        if (token.isEmpty()) {
+            token = new HashMap<>();
+            // 从大华接口获取token
+            JSONObject jsonOne = new JSONObject();
+            String account = "system";
+            jsonOne.set("userName", account);
+            jsonOne.set("clientType", "winpc");
+            String postOne = "";
+            try {
+                postOne = HttpUtil.post("http://10.55.134.30:8314/videoService/accounts/authorize", jsonOne.toString());
+            } catch (Exception e) {
+                log.error("【视频测试】大华接口请求异常,账号:{}:{}", account, e.getMessage());
+                throw new ServiceException("【视频测试】大华融合通信平台无法连接,请联系大华融合通信平台维护人员检查!");
+            }
+            JSONObject postOneJson = JSONUtil.parseObj(postOne);
+            log.info("【视频测试】大华创建会话,,账号:{}的返回结果:{}", account, postOneJson);
+            if (postOneJson.containsKey("realm")) {
+                String randomKey = postOneJson.getStr("randomKey");
+                String realm = postOneJson.getStr("realm");
+                String encryptType = postOneJson.getStr("encryptType");
+                // 第二次交互
+                String password = "Admin123";
+                String signature = SecureUtil.md5(
+                    SecureUtil.md5(account + ":" + realm + ":" +
+                        SecureUtil.md5(
+                            SecureUtil.md5(
+                                account +
+                                    SecureUtil.md5(password)))) + ":" + randomKey);
+                jsonOne.set("signature", signature);
+                jsonOne.set("randomKey", randomKey);
+                jsonOne.set("encryptType", encryptType);
+                jsonOne.set("pid", 2548);
+                jsonOne.set("expiredTime", 120);
+                String postTwo = HttpUtil.post("http://10.55.134.30:8314/videoService/accounts/authorize", jsonOne.toString());
+                JSONObject postTwoJson = JSONUtil.parseObj(postTwo);
+                if (postTwoJson.containsKey("token")) {
+                    String tokenStr = postTwoJson.getStr("token");
+                    int duration = postTwoJson.getInt("duration");
+                    String userId = postTwoJson.getStr("userId");
+                    token.put("userId", userId);
+                    token.put("token", tokenStr);
+                    token.put("userName", postTwoJson.getStr("userName"));
+                    log.info("【视频测试】大华创建会话,账号:{}的过期时间:{}", account, duration);
+                    log.info("【视频测试】大华创建会话,账号:{}的Token:{}", account, token);
+                    if (ObjectUtil.isEmpty(duration)) {
+                        duration = 120;
+                    }
+                    // 存入redis缓存
+                    RedisUtils.setCacheMap(Constants.CACHE_DH_TEST_TOKEN, token);
+                    RedisUtils.expire(Constants.CACHE_DH_TEST_TOKEN, Convert.toInt(duration), TimeUnit.SECONDS);
+                } else {
+                    log.error("【视频测试】大华,账号:{}第二次创建会话失败:{}", account, postTwoJson);
+                    if ("user is repeated landing".equals(postTwoJson.getStr("message"))) {
+                        // 说明已经登录过,那么退出,重新获取
+                    }
+                }
+            } else {
+                log.error("【视频测试】大华,账号:{}第一次创建会话失败:{}", account, postOneJson);
+            }
+        }
+        return token;
+    }
+
     private JSONArray getList(Map<String, Object> param) {
         param.put("nodeType", 1);
         param.put("typeCode", "01;0;ALL;ALL");

+ 14 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/IncidentTaskServiceImpl.java

@@ -300,17 +300,31 @@ public class IncidentTaskServiceImpl extends ServicePlusImpl<IncidentTaskMapper,
         List<IncidentTaskVo> incidentTaskVos = listTaskInfo(oldId);
         if (incidentTaskVos != null && incidentTaskVos.size() > 0) {
             List<IncidentTask> incidentTasks = new ArrayList<>();
+            JSONArray saveJsonArray = new JSONArray();
             for (IncidentTaskVo incidentTaskVo : incidentTaskVos) {
                 IncidentTask incidentTask = new IncidentTask();
                 incidentTask.setTaskName(incidentTaskVo.getTaskName());
                 incidentTask.setIncidentId(newId);
                 incidentTask.setSendFlag(incidentTaskVo.getSendFlag());
                 incidentTask.setChannel("1");
+                incidentTask.setExprJson(incidentTaskVo.getExprJson());
                 incidentTasks.add(incidentTask);
+
+                List<String> newUserId = CollUtil.defaultIfEmpty(incidentTaskVo.getMessagePushUsers(), new ArrayList<>()).stream().map(MessagePushUser::getUserId).collect(Collectors.toList());
+                for (String userId : newUserId) {
+                    IncidentUser save = new IncidentUser();
+                    save.setIncidentId(newId);
+                    save.setUserId(userId);
+                    save.setSource(StrUtil.equals(incidentTaskVo.getSendFlag(), "1") ? "1" : "2");
+                    saveJsonArray.add(save);
+                }
             }
             // 先删除原来的历史事件方案
             this.remove(Wrappers.<IncidentTask>lambdaQuery().eq(IncidentTask::getIncidentId, newId).eq(IncidentTask::getChannel, "1"));
             this.saveAll(incidentTasks);
+            if (saveJsonArray.size() > 0) {
+                RedisUtils.publish(Constants.INCIDENT_USER_BATCH, saveJsonArray);
+            }
         }
         return true;
     }

+ 2 - 0
ruoyi-zhdd/src/main/java/com/ruoyi/zhdd/service/impl/ResourceDetailServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -104,6 +105,7 @@ public class ResourceDetailServiceImpl extends ServicePlusImpl<ResourceDetailMap
         if (voById != null) {
             update.setResourceType(voById.getResourceType());
         }
+        update.setCreateTime(new Date());
         /*if (StrUtil.isNotBlank(bo.getIdcard())) {
             boolean validCard = IdcardUtil.isValidCard(bo.getIdcard());
             if (!validCard) {