From 43f46c3801b0aa8544a1703e4f1a27ecc8db22b8 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期六, 13 一月 2024 16:17:51 +0800
Subject: [PATCH] 修改生产配置文件和无人机日志

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java |  113 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 95 insertions(+), 18 deletions(-)

diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
index 6f27a17..bf0718e 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -2,18 +2,25 @@
 
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.device.camera.domain.ArdCameras;
 import com.ruoyi.device.camera.domain.CameraCmd;
 import com.ruoyi.device.camera.service.IArdCamerasService;
+import com.ruoyi.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
+import java.lang.reflect.Method;
 import java.util.Date;
+
 
 /**
  * SDK鎺у埗澶勭悊
@@ -22,10 +29,13 @@
  */
 @Aspect
 @Component
+@Slf4j(topic = "sdk")
 public class SdkOperateAspect {
 
     @Resource
     IArdCamerasService ardCamerasService;
+    @Resource
+    ISysUserService sysUserService;
 
     @Pointcut("@annotation(com.ruoyi.common.annotation.SdkOperate)")
     public void dsPointCut() {
@@ -34,10 +44,14 @@
 
     @Around("dsPointCut()")
     public Object around(ProceedingJoinPoint point) throws Throwable {
-        Boolean resultMap = dataScopeFilter(point);
-        if (resultMap) {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+        Method method = signature.getMethod();
+        Boolean result = controlScopeFilter(point);
+        if (result) {
+            log.debug("宸茶幏鍙栫浉鏈烘帶鍒舵潈--" + method.getName());
             return point.proceed();
         } else {
+            log.debug("鏈幏鍙栫浉鏈烘帶鍒舵潈--" + method.getName());
             return false;//浠f浛鐩爣鏂规硶鐨勮繑鍥炲��
         }
     }
@@ -47,28 +61,91 @@
      *
      * @param joinPoint 鍒囩偣
      */
-    public Boolean dataScopeFilter(ProceedingJoinPoint joinPoint) {
-        //鑾峰彇璇锋眰鎺у埗鐩告満鐨勪俊鎭�
+    public Boolean controlScopeFilter(ProceedingJoinPoint joinPoint) {
+
+        //鑾峰彇璇锋眰鎺у埗鐩告満鐨勫懡浠や俊鎭�
         CameraCmd cmd = (CameraCmd) joinPoint.getArgs()[0];
+        String operator = cmd.getOperator();//鐢宠鑰�
+        /*鑾峰彇鐩告満褰撳墠鐨勮鎺т俊鎭�*/
         ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cmd.getCameraId());
         if (StringUtils.isNull(ardCameras)) {
             return false;
         }
-        //浼樺厛绾ф瘮瀵�
-        Date operatorExpired = ardCameras.getOperatorExpired();
-        Date now = new Date();
-        if (now.before(operatorExpired)) {
-            //鏈繃鏈�
-
-            LoginUser loginUser = SecurityUtils.getLoginUser();
-            if (StringUtils.isNull(loginUser)) {
-                return false;//褰撳墠鐧诲綍鐢ㄦ埛涓虹┖涓嶅彲浠ユ帶鍒�
-            }
-            SysUser user = loginUser.getUser();
-            if (!user.getUserId().equals(ardCameras.getOperatorId())) {
-                return false;//鏈繃鏈熷苟涓斾笉鏄綋鍓嶇敤鎴峰垯涓嶅彲鎺�
+        Date currentExpired = ardCameras.getOperatorExpired();//褰撳墠鐩告満鐨勮繃鏈熸椂闂�
+        String currentOperator = ardCameras.getOperatorId();//褰撳墠鐩告満鐨勬搷浣滆��
+        /*鍏堝垽鏂攣瀹氭椂闂�*/
+        if (currentExpired == null) {
+            /*濡傛灉鏈厤缃攣瀹氭椂闂达紝浠讳綍浜哄彲鎺у埗*/
+            ardCameras.setOperatorId(operator);
+            ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+            return true;
+        } else {
+            /*閿佸畾鏃堕棿閰嶇疆浜嗭紝鍒ゆ柇褰撳墠鎿嶄綔鑰�*/
+            if (StringUtils.isEmpty(currentOperator)) {
+                /*褰撳墠鐩告満鎺у埗鑰呬负绌烘椂锛屼换浣曚汉鍙帶*/
+                ardCameras.setOperatorId(operator);
+                ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+                return true;
+            } else {
+                /*鍒ゆ柇鏄惁鏈汉缁х画鎺у埗*/
+                if (currentOperator.equals(operator)) {
+                    return true;
+                } else {
+                    /*褰撳墠鐩告満鏈変汉鎺у埗骞朵笖閰嶇疆浜嗚繃鏈熸椂闂达紝鍏堝垽鏂紭鍏堢骇锛屼紭鍏堢骇楂樺厑璁告帶鍒�*/
+                    Integer currentLevel = 0;//褰撳墠鐩告満鐨勬搷浣滆�呯殑浼樺厛绾�
+                    String camerasPriority = DictUtils.getDictValue("cameras_priority", currentOperator);
+                    if(StringUtils.isNotEmpty(camerasPriority)) {
+                        /*褰撳墠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
+                        currentLevel = Integer.valueOf(camerasPriority);
+                    } else {
+                        /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/
+                        SysUser sysUser = sysUserService.selectUserById(currentOperator);
+                        if(StringUtils.isNull(sysUser))
+                        {
+                            return true;
+                        }
+                        currentLevel = Integer.valueOf(sysUser.getCameraPriority());
+                    }
+                    Integer operatorLevel = 0;//鑾峰彇鐢宠鑰呯殑浼樺厛绾�
+                    String operatorPriority = DictUtils.getDictValue("cameras_priority", operator);
+                    if (StringUtils.isNotEmpty(operatorPriority)) {
+                        /*鍖呭惈璇存槑褰撳墠鐢宠鎺у埗鑰呬负绯荤粺鎶ヨ鐢ㄦ埛*/
+                        operatorLevel = Integer.valueOf(operatorPriority);
+                    } else {
+                        /*鍚﹀垯鐢宠鎺у埗鑰呬负褰撳墠鐧诲綍鐢ㄦ埛*/
+                        LoginUser loginUser = SecurityUtils.getLoginUser();
+                        SysUser user = loginUser.getUser();//鑾峰彇鐧诲綍鐢ㄦ埛鐨勪俊鎭�
+                        operatorLevel = Integer.valueOf(user.getCameraPriority());
+                    }
+                    /*鐢宠鑰呮湭鎺у垯鍒ゆ柇浼樺厛绾�*/
+                    if (operatorLevel > currentLevel) {
+                        /*濡傛灉鐢宠鑰呬紭鍏堢骇楂橈紝鍏佽鎺у埗*/
+                        ardCameras.setOperatorId(operator);
+                        ardCameras.setOperatorExpired(null);
+                        ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+                        return true;
+                    } else {
+                        /*濡傛灉鐢宠鑰呬紭鍏堢骇浣庯紝鍒欏垽鏂繃鏈熸椂闂�*/
+                        if (currentExpired == null) {
+                            /*褰撳墠鐩告満鏈厤缃繃鏈熸椂闂达紝鍙帶*/
+                            ardCameras.setOperatorId(operator);
+                            ardCameras.setOperatorExpired(null);
+                            ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+                            return true;
+                        } else {
+                            if (new Date().before(currentExpired)) {
+                                /*鏃堕棿鏈繃鏈燂紝涓嶅彲鎺�*/
+                                return false;
+                            } else {
+                                /*鏃堕棿杩囨湡锛屽彲浠ユ帶鍒讹紝鏇存柊鎺у埗鑰�*/
+                                ardCameras.setOperatorId(operator);
+                                ardCamerasService.updateArdCameras(ardCameras);//鏇存柊鐩告満褰撳墠鎺у埗鑰�
+                                return true;
+                            }
+                        }
+                    }
+                }
             }
         }
-        return true;
     }
 }

--
Gitblit v1.9.3