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); } 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 @@ //è·åææappç¨æ· 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); 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; } 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())); 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); } } } } 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}