‘liusuyi’
2023-08-09 161b9318e345c8a0c9cdc133b33a1c759495f323
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -1,31 +1,26 @@
package com.ruoyi.framework.aspectj;
import com.ruoyi.common.annotation.SdkOperate;
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.constant.CamPriority;
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.JoinPoint;
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.Nullable;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.Date;
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
/**
 * SDK控制处理
@@ -67,6 +62,7 @@
     * @param joinPoint 切点
     */
    public Boolean controlScopeFilter(ProceedingJoinPoint joinPoint) {
        //获取请求控制相机的命令信息
        CameraCmd cmd = (CameraCmd) joinPoint.getArgs()[0];
        String operator = cmd.getOperator();//申请者
@@ -97,23 +93,25 @@
                } else {
                    /*当前相机有人控制并且配置了过期时间,先判断优先级,优先级高允许控制*/
                    Integer currentLevel = 0;//当前相机的操作者的优先级
                    if (CamPriority.priorityMap.containsKey(currentOperator)) {
                    String camerasPriority = DictUtils.getDictValue("cameras_priority", currentOperator);
                    if(StringUtils.isNotEmpty(camerasPriority)) {
                        /*当前控制者为系统报警用户*/
                        currentLevel = (Integer) CamPriority.priorityMap.get(currentOperator);
                        currentLevel = Integer.valueOf(camerasPriority);
                    } else {
                        /*当前控制者为普通用户*/
                        SysUser sysUser = sysUserService.selectUserById(currentOperator);
                        currentLevel = sysUser.getCameraPriority();
                        currentLevel = Integer.valueOf(sysUser.getCameraPriority());
                    }
                    Integer operatorLevel = 0;//获取申请者的优先级
                    if (CamPriority.priorityMap.containsKey(operator)) {
                    String operatorPriority = DictUtils.getDictValue("cameras_priority", operator);
                    if (StringUtils.isNotEmpty(operatorPriority)) {
                        /*包含说明当前申请控制者为系统报警用户*/
                        operatorLevel = (Integer) CamPriority.priorityMap.get(operator);
                        operatorLevel = Integer.valueOf(operatorPriority);
                    } else {
                        /*否则申请控制者为当前登录用户*/
                        LoginUser loginUser = SecurityUtils.getLoginUser();
                        SysUser user = loginUser.getUser();//获取登录用户的信息
                        operatorLevel = user.getCameraPriority();
                        operatorLevel = Integer.valueOf(user.getCameraPriority());
                    }
                    /*申请者未控则判断优先级*/
                    if (operatorLevel > currentLevel) {