From a2ecc47d9c93a508fe82eead8f88ffb44e14e9fa Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 28 七月 2023 14:17:05 +0800
Subject: [PATCH] 增加定时任务从融云接口更新app用户u状态
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java | 45 ++++++++++++++++++++++
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java | 3 -
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java | 24 ++++++++---
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 3 +
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java | 13 ++++++
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java | 6 +-
6 files changed, 82 insertions(+), 12 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
index 6a3de03..1ed5b73 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -164,8 +164,7 @@
params.put("bearing", ardAppPosition.getBearing());
sysUser.setParams(params);
}
- Boolean online = rongCloudService.checkOnline(sysUser.getUserId());
- if(online)
+ if(sysUser.getAppOnlineState().equals("1"))
{
onLineList.add(sysUser);
}
diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
index 52ba743..388a4ad 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
@@ -38,13 +38,18 @@
// 鍒濆瀹氭椂浠诲姟锛屾牴鎹敤鎴疯缃殑棰戠巼瀹氭湡鎺ㄩ�佸疄鏃朵綅缃俊鎭�
public static void initPushTask(String userId, Session session, int pushFrequency) {
initDataMap.put(userId, getAppPositionList());
+ List<ArdAppPosition> appPositionList = initDataMap.get(userId);
+ if (appPositionList.size() == 0) {
+ return;
+ }
// 鍚姩鏂扮殑瀹氭椂浠诲姟
if (pushFrequency > 0) {
scheduler.scheduleAtFixedRate(() -> {
- List<ArdAppPosition> appPositionList = initDataMap.get(userId);
- Map newMap = new HashMap<>();
- newMap.put("50000", appPositionList);
- WebSocketUtils.sendMessage(session, newMap);
+ if (appPositionList.size() > 0) {
+ Map newMap = new HashMap<>();
+ newMap.put("50000", appPositionList);
+ WebSocketUtils.sendMessage(session, newMap);
+ }
}, 0, pushFrequency, TimeUnit.MILLISECONDS);
}
}
@@ -55,10 +60,13 @@
stopLocationPushTask(session);
// 鍚姩鏂扮殑瀹氭椂浠诲姟
if (pushFrequency > 0) {
+ List<ArdAppPosition> appPositionList = getAppPositionList().stream()
+ .filter(obj -> obj.getUserId().equals(guideUserId))
+ .collect(Collectors.toList());
+ if (appPositionList.size() == 0) {
+ return;
+ }
ScheduledFuture<?> task = scheduler.scheduleAtFixedRate(() -> {
- List<ArdAppPosition> appPositionList = getAppPositionList().stream()
- .filter(obj -> obj.getUserId().equals(guideUserId))
- .collect(Collectors.toList());
Map newMap = new HashMap<>();
newMap.put("50000", appPositionList);
WebSocketUtils.sendMessage(session, newMap);
@@ -82,6 +90,8 @@
//鑾峰彇鎵�鏈塧pp鐢ㄦ埛
List<SysUser> list = sysUserService.selectAllAppUserList(new SysUser());
for (SysUser sysUser : list) {
+ if(sysUser.getAppOnlineState().equals(0))
+ {continue; }
IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
ArdAppPositions.add(ardAppPosition);
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 1f48457..804d9d6 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -145,6 +145,11 @@
*/
private String appUserType;
/**
+ * app鐢ㄦ埛鍦ㄧ嚎鐘舵��
+ * 0-绂荤嚎 1-鍦ㄧ嚎
+ */
+ private String appOnlineState;
+ /**
* 鍏宠仈鎶ヨ绫诲瀷缁�
*/
private List<String> commands;
@@ -153,6 +158,14 @@
}
+ public String getAppOnlineState() {
+ return appOnlineState;
+ }
+
+ public void setAppOnlineState(String appOnlineState) {
+ this.appOnlineState = appOnlineState;
+ }
+
public String getAppUserType() {
return appUserType;
}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
index 74ce1bd..87bcc07 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -107,10 +107,10 @@
role.getRoleId()));
} else if (DATA_SCOPE_DEPT.equals(dataScope)) {
sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId()));
- } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {//" OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or '{}'= any(string_to_array(ancestors,',') ))",
+ } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) {
sqlString.append(StringUtils.format(
- " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE CAST ( {} AS VARCHAR ) = ANY ( string_to_array( ancestors, ',' )))",
- deptAlias, user.getDeptId()));
+ " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or CAST ( {} AS VARCHAR ) = ANY ( string_to_array( ancestors, ',' )))",
+ deptAlias, user.getDeptId(),user.getDeptId()));
} else if (DATA_SCOPE_SELF.equals(dataScope)) {
if (StringUtils.isNotBlank(userAlias)) {
sqlString.append(StringUtils.format(" OR {}.user_id = '{}' ", userAlias, user.getUserId()));
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java
new file mode 100644
index 0000000..8d2239f
--- /dev/null
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java
@@ -0,0 +1,45 @@
+package com.ruoyi.quartz.task;
+
+import com.ruoyi.app.position.domain.ArdAppPosition;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.rongcloud.service.RongCloudService;
+import com.ruoyi.system.service.ISysUserService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 铻嶄簯浠诲姟绫�
+ * @ClassName: RongCloudTask
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�28鏃�13:18:22
+ * @Version: 1.0
+ **/
+@Component("RongCloudTask")
+public class RongCloudTask {
+
+ @Resource
+ ISysUserService sysUserService;
+ @Resource
+ RongCloudService rongCloudService;
+
+ public void getAppUserOnlineStateTask()
+ {
+ List<SysUser> SysUserList = sysUserService.selectAllAppUserList(new SysUser());
+ if(SysUserList.size()>0) {
+ for (SysUser sysUser : SysUserList) {
+ Boolean online = rongCloudService.checkOnline(sysUser.getUserId());
+ if (online) {
+ sysUser.setAppOnlineState("1");
+ } else {
+ sysUser.setAppOnlineState("0");
+ }
+ sysUserService.updateUser(sysUser);
+ }
+ }
+ }
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 4479047..dadfb99 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -25,6 +25,7 @@
<result property="cameraPriority" column="camera_priority"/>
<result property="rongCloudToken" column="rong_cloud_token"/>
<result property="appUserType" column="app_user_type"/>
+ <result property="appOnlineState" column="app_online_state"/>
<result property="remark" column="remark"/>
<association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/>
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
@@ -68,6 +69,7 @@
u.camera_priority,
u.rong_cloud_token,
u.app_user_type,
+ u.app_online_state,
u.remark,
d.dept_id,
d.parent_id,
@@ -245,6 +247,7 @@
<if test="cameraPriority != null">camera_priority = #{cameraPriority},</if>
<if test="rongCloudToken != null">rong_cloud_token = #{rongCloudToken},</if>
<if test="appUserType != null">app_user_type = #{appUserType},</if>
+ <if test="appOnlineState != null">app_online_state = #{appOnlineState},</if>
update_time = now()
</set>
where user_id = #{userId}
--
Gitblit v1.9.3