From 4155135bb0247685ce3652fe0257c39ff3e21ced Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 27 七月 2023 14:45:00 +0800
Subject: [PATCH] 重构app用户由角色转为用户配置

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java       |   14 ++--
 ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java |   15 ----
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/AppPositionPush.java        |   39 +++++++++----
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                        |   22 ++----
 lib/webrtc/setup.bat                                                                   |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java               |    6 +-
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java            |   32 +++++-----
 ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java         |    6 +
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java         |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                  |    2 
 10 files changed, 71 insertions(+), 69 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 94e936d..6a3de03 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
@@ -139,18 +139,7 @@
         List<SysUser> list = sysUserService.selectUserList(user);
         return AjaxResult.success(list);
     }
-    /**
-     * 鑾峰彇鎵�鏈塧pp鐢ㄦ埛
-     */
-    @ApiOperation("鑾峰彇鎵�鏈塧pp鐢ㄦ埛")
-    @GetMapping("/getAppUserlist")
-    public AjaxResult getAppUserlist(Long deptId)
-    {
-        SysUser user=new SysUser();
-        user.setDeptId(deptId);
-        List<SysUser> list = sysUserService.selectAppUserList(user);
-        return AjaxResult.success(list);
-    }
+
 
     /**
      * 鑾峰彇鎵�鏈塧pp鐢ㄦ埛
@@ -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)
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 a3c2f72..3314c4d 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
@@ -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<>();//榛樿浼氳瘽鍙戦�佹暟鎹甿ap
+    public static final Map<Session, Map<String, ArdAppPosition>> defaultDataMap = new HashMap<>();//榛樿浼氳瘽鍙戦�佹暟鎹甿ap
 
     // 鍒濆瀹氭椂浠诲姟锛屾牴鎹敤鎴疯缃殑棰戠巼瀹氭湡鎺ㄩ�佸疄鏃朵綅缃俊鎭�
     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);
         }
     }
+
     //鏌ヨ鎵�鏈塧pp鐢ㄦ埛鐨勪綅缃俊鎭�
-    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);
         //鑾峰彇鎵�鏈塧pp鐢ㄦ埛
-        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;
diff --git a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java b/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
index 9b86968..3910fd7 100644
--- a/ard-work/src/main/java/com/ruoyi/app/task/controller/ArdAppTaskController.java
+++ b/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));
     }
-
 }
diff --git a/lib/webrtc/setup.bat b/lib/webrtc/setup.bat
index 283612d..16a4bff 100644
--- a/lib/webrtc/setup.bat
+++ b/lib/webrtc/setup.bat
@@ -1,3 +1,3 @@
 cd %~dp0
 
-webrtc-streamer.exe -o
\ No newline at end of file
+start /b webrtc-streamer.exe -o
\ No newline at end of file
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 b711841..1f48457 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
@@ -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() {
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 9fbf323..a4dcc41 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
@@ -70,7 +70,7 @@
         {
             SysUser currentUser = loginUser.getUser();
             // 濡傛灉鏄秴绾х鐞嗗憳锛屽垯涓嶈繃婊ゆ暟鎹�;濡傛灉鏄痑pp鎸囨尌绔紝鍒欎笉杩囨护鏁版嵁;
-            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(),
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 0c7859e..bb854de 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/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);
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸查厤鐢ㄦ埛瑙掕壊鍒楄〃
      * 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 6249b54..c90c6cd 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/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);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 8100fa0..67dbedb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/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);
     }
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 5f916c9..79ee9f1 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/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}

--
Gitblit v1.9.3