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