‘liusuyi’
2023-07-27 4155135bb0247685ce3652fe0257c39ff3e21ced
重构app用户由角色转为用户配置
已修改10个文件
140 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/webrtc/setup.bat 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java
@@ -139,18 +139,7 @@
        List<SysUser> list = sysUserService.selectUserList(user);
        return AjaxResult.success(list);
    }
    /**
     * 获取所有app用户
     */
    @ApiOperation("获取所有app用户")
    @GetMapping("/getAppUserlist")
    public AjaxResult getAppUserlist(Long deptId)
    {
        SysUser user=new SysUser();
        user.setDeptId(deptId);
        List<SysUser> list = sysUserService.selectAppUserList(user);
        return AjaxResult.success(list);
    }
    /**
     * 获取所有app用户
@@ -161,7 +150,7 @@
    {
        SysUser user=new SysUser();
        user.setDeptId(deptId);
        List<SysUser> list = sysUserService.selectAppUserList(user);
        List<SysUser> list = sysUserService.selectAllAppUserList(user);
        List<SysUser> onLineList=new ArrayList<>();
        List<SysUser> offLineList=new ArrayList<>();
        for(SysUser sysUser:list)
ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java
@@ -8,6 +8,7 @@
import com.ruoyi.system.service.ISysUserService;
import javax.websocket.Session;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -28,18 +29,25 @@
    //app位置上传
    public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20);
    public static final Map<Session, ScheduledFuture<?>> taskMap = new HashMap<>();
    public static final Map<Session, Map> defaultDataMap = new HashMap<>();//默认会话发送数据map
    public static final Map<Session, Map<String, ArdAppPosition>> defaultDataMap = new HashMap<>();//默认会话发送数据map
    // 初始定时任务,根据用户设置的频率定期推送实时位置信息
    public static void initPushTask(Session session, int pushFrequency) {
        // 启动新的定时任务
        if (pushFrequency > 0) {
            scheduler.scheduleAtFixedRate(() -> {
                Map map = defaultDataMap.get(session);
                WebSocketUtils.sendMessage(session, map);
                Map<String, ArdAppPosition> map = defaultDataMap.get(session);
                Map newMap = new HashMap<>();
                List<ArdAppPosition> positionList = new ArrayList<>();
                for (String key : map.keySet()) {
                    positionList.add(map.get(key));
                }
                newMap.put("50000", positionList);
                WebSocketUtils.sendMessage(session, newMap);
            }, 0, pushFrequency, TimeUnit.MILLISECONDS);
        }
    }
    // 新的定时任务,根据用户设置的频率定期推送实时位置信息
    public static void startLocationPushTask(String userId, Session session, int pushFrequency) {
        // 取消之前设置的定时任务
@@ -51,14 +59,22 @@
            taskMap.put(session, task); // 存储新的定时任务
        }
    }
    public static ScheduledFuture<?> ScheduledFutureTask(Session session, String userId, Integer pushFrequency) {
        return scheduler.scheduleAtFixedRate(() -> {
            ArdAppPosition ardAppPosition = getAppPositionList().get(userId);
            Map<String, ArdAppPosition> DataMap = new HashMap<>();
            DataMap.put(userId,ardAppPosition);
            WebSocketUtils.sendMessage(session, DataMap);
            DataMap.put(userId, ardAppPosition);
            Map newMap = new HashMap<>();
            List<ArdAppPosition> positionList = new ArrayList<>();
            for (String key : DataMap.keySet()) {
                positionList.add(DataMap.get(key));
            }
            newMap.put("50000", positionList);
            WebSocketUtils.sendMessage(session, newMap);
        }, 0, pushFrequency, TimeUnit.MILLISECONDS);
    }
    //取消定时任务
    public static void stopLocationPushTask(Session session) {
        ScheduledFuture<?> scheduledTask = taskMap.get(session);
@@ -66,18 +82,17 @@
            scheduledTask.cancel(false);
        }
    }
    //查询所有app用户的位置信息
    public static Map<String,ArdAppPosition> getAppPositionList()
    {
        Map<String,ArdAppPosition> userMap=new HashMap<>();
    public static Map<String, ArdAppPosition> getAppPositionList() {
        Map<String, ArdAppPosition> userMap = new HashMap<>();
        ISysUserService sysUserService = SpringUtils.getBean(ISysUserService.class);
        //获取所有app用户
        List<SysUser> list = sysUserService.selectAppUserListNoDataScope(new SysUser());
        for(SysUser sysUser:list)
        {
        List<SysUser> list = sysUserService.selectAllocatedList(new SysUser());
        for (SysUser sysUser : list) {
            IArdAppPositionService ardAppPositionService = SpringUtils.getBean(IArdAppPositionService.class);
            ArdAppPosition ardAppPosition = ardAppPositionService.selectLastArdAppPositionByUserId(sysUser.getUserId());
            userMap.put(sysUser.getUserId(),ardAppPosition);
            userMap.put(sysUser.getUserId(), ardAppPosition);
        }
        return userMap;
ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
@@ -6,7 +6,9 @@
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.alarm.steal.domain.ArdAlarmStealelec;
import com.ruoyi.app.task.domain.ArdAppTaskDetail;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.security.SecurityUtil;
@@ -35,7 +37,8 @@
public class ArdAppTaskController extends BaseController {
    @Autowired
    private IArdAppTaskService ardAppTaskService;
    @Autowired
    private ISysUserService sysUserService;
    /**
     * 查询app任务管理列表
     */
@@ -132,5 +135,4 @@
    public AjaxResult getTaskDetailInfo(@PathVariable("id") String id) {
        return success(ardAppTaskService.selectArdAppTaskDetailById(id));
    }
}
lib/webrtc/setup.bat
@@ -1,3 +1,3 @@
cd %~dp0
webrtc-streamer.exe -o
start /b webrtc-streamer.exe -o
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -139,11 +139,26 @@
     * 用户融云token
     */
    private String rongCloudToken;
    /**
     * app用户类型
     * 0-app指挥端 1-app单兵端 空-pc端
     */
    private String appUserType;
    /**
     * 关联报警类型组
     */
    private List<String> commands;
    public SysUser() {
    }
    public String getAppUserType() {
        return appUserType;
    }
    public void setAppUserType(String appUserType) {
        this.appUserType = appUserType;
    }
    public List<String> getCommands() {
@@ -188,21 +203,6 @@
    public static boolean isAdmin(String userId) {
        return userId != null && userId.equals("1");
    }
    /**
     * 是否app指挥端
     */
    public boolean isAppLeader() {
        return isAppLeader(this.userId);
    }
    public boolean isAppLeader(String userId) {
        List<SysRole> roles = this.getRoles();
        if(roles==null)
        {return false;}
        boolean appLeader = roles.stream().anyMatch(sysRole -> sysRole.getRoleKey().contains("appLeader"));
        return userId != null && appLeader;
    }
    public Long getDeptId() {
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -70,7 +70,7 @@
        {
            SysUser currentUser = loginUser.getUser();
            // 如果是超级管理员,则不过滤数据;如果是app指挥端,则不过滤数据;
            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()&& !currentUser.isAppLeader())
            if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin())
            {
                String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), PermissionContextHolder.getContext());
                dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -26,7 +26,7 @@
     * @param sysUser APP用户信息
     * @return 用户信息集合信息
     */
    public List<SysUser> selectAppUserList(SysUser sysUser);
    public List<SysUser> selectAllAppUserList(SysUser sysUser);
    /**
     * 根据条件分页查询已配用户角色列表
     * 
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -20,13 +20,13 @@
    public List<SysUser> selectUserList(SysUser user);
    /**
     * 根据条件分页查询APP用户列表
     * 获取App单兵和指挥端用户列表
     *
     * @param user APP用户信息
     * @return 用户信息集合信息
     */
    public List<SysUser> selectAppUserList(SysUser user);
    public List<SysUser> selectAppUserListNoDataScope(SysUser user);
    public List<SysUser> selectAllAppUserList(SysUser user);
    /**
     * 根据条件分页查询已分配用户角色列表
     *
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -136,14 +136,16 @@
    public List<SysUser> selectUserList(SysUser user) {
        return userMapper.selectUserList(user);
    }
    /**
     * 获取App单兵和指挥端用户列表
     *
     * @param user APP用户信息
     * @return 用户信息集合信息
     */
    @Override
    @DataScope(deptAlias = "d", userAlias = "u")
    public List<SysUser> selectAppUserList(SysUser user) {
        return userMapper.selectAppUserList(user);
    }
    @Override
    public List<SysUser> selectAppUserListNoDataScope(SysUser user) {
        return userMapper.selectAppUserList(user);
    public List<SysUser> selectAllAppUserList(SysUser user) {
        return userMapper.selectAllAppUserList(user);
    }
    /**
     * 根据条件分页查询已分配用户角色列表
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -24,6 +24,7 @@
        <result property="updateTime" column="update_time"/>
        <result property="cameraPriority" column="camera_priority"/>
        <result property="rongCloudToken" column="rong_cloud_token"/>
        <result property="appUserType" column="app_user_type"/>
        <result property="remark" column="remark"/>
        <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/>
        <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
@@ -66,6 +67,7 @@
               u.create_time,
               u.camera_priority,
               u.rong_cloud_token,
               u.app_user_type,
               u.remark,
               d.dept_id,
               d.parent_id,
@@ -87,9 +89,6 @@
    </sql>
    <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
--         select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status,
--         u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.camera_priority,u.rong_cloud_token, d.dept_name, d.leader from sys_user u
--         left join sys_dept d on u.dept_id = d.dept_id
        <include refid="selectUserVo"/>
        where u.del_flag = '0'
        <if test="userId != null and userId != ''">
@@ -110,21 +109,13 @@
        <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
            AND u.create_time &lt;= to_timestamp(#{params.endTime},'yyyy-MM-DD')
        </if>
        <if test="deptId != null and deptId != 0">
            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE cast(#{deptId} as
            varchar) = any(string_to_array(ancestors,',')) ))
        </if>
        <if test="appUserType!=null and appUserType!=''"> AND u.app_user_type = #{appUserType}</if>
        <!-- 数据范围过滤 -->
        ${params.dataScope}
    </select>
    <select id="selectAppUserList" parameterType="SysUser" resultMap="SysUserResult">
    <select id="selectAllAppUserList" parameterType="SysUser" resultMap="SysUserResult">
        <include refid="selectUserVo"/>
        where u.del_flag = '0'
        and LOWER(r.role_name) like '%app%'
        <if test="deptId != null and deptId != 0">
            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE cast(#{deptId} as
            varchar) = any(string_to_array(ancestors,',')) ))
        </if>
        where u.del_flag = '0' and u.app_user_type in('0','1')
        <!-- 数据范围过滤 -->
        ${params.dataScope}
    </select>
@@ -210,6 +201,7 @@
        <if test="createBy != null and createBy != ''">create_by,</if>
        <if test="remark != null and remark != ''">remark,</if>
        <if test="cameraPriority != null">camera_priority,</if>
        <if test="appUserType != null and appUserType != ''">app_user_type,</if>
        create_time
        )values(
        <if test="userId != null and userId != ''">#{userId},</if>
@@ -225,6 +217,7 @@
        <if test="createBy != null and createBy != ''">#{createBy},</if>
        <if test="remark != null and remark != ''">#{remark},</if>
        <if test="cameraPriority != null">#{cameraPriority},</if>
        <if test="appUserType != null">#{appUserType},</if>
        now()
        )
    </insert>
@@ -247,6 +240,7 @@
            <if test="remark != null">remark = #{remark},</if>
            <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>
            update_time = now()
        </set>
        where user_id = #{userId}