From 686c587744cf0933b4022a1b741f8f50658e2632 Mon Sep 17 00:00:00 2001 From: zhangnaisong <2434969829@qq.com> Date: 星期日, 28 四月 2024 15:40:19 +0800 Subject: [PATCH] 视频标签提交 --- ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 95 insertions(+), 23 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 e0b93c8..b96c19a 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 @@ -1,27 +1,27 @@ package com.ruoyi.framework.aspectj; -import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.core.domain.AjaxResult; 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 org.aspectj.lang.JoinPoint; +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.Before; 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; -import java.util.HashMap; -import java.util.Map; + /** * SDK鎺у埗澶勭悊 @@ -30,10 +30,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() { @@ -42,12 +45,16 @@ @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 { - return false;//浠f浛鐩爣鏂规硶鐨勮繑鍥炲�� + log.debug("鏈幏鍙栫浉鏈烘帶鍒舵潈--" + method.getName()); + return AjaxResult.error("鏈幏鍙栫浉鏈烘帶鍒舵潈--" + method.getName());//浠f浛鐩爣鏂规硶鐨勮繑鍥炲�� } } @@ -56,26 +63,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