‘liusuyi’
2023-07-28 a2ecc47d9c93a508fe82eead8f88ffb44e14e9fa
增加定时任务从融云接口更新app用户u状态
已添加1个文件
已修改5个文件
94 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RongCloudTask.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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}