package com.genersoft.iot.vmp.utils; import com.genersoft.iot.vmp.gb28181.DeviceShare; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.service.IAccountService; import com.genersoft.iot.vmp.service.IAdminService; import com.genersoft.iot.vmp.service.IDeviceService; import com.genersoft.iot.vmp.storager.dao.dto.AdminAccount; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class DeviceHelper { private final static Logger logger = LoggerFactory.getLogger(DeviceHelper.class); @Autowired private IAdminService adminService; @Autowired private IAccountService accountService; @Autowired private IDeviceService deviceService; @Autowired private DeviceShare deviceShare; /** * 获取设备 * * @param deviceId * @param shareCode * @return */ public Device getDevice(String deviceId, String shareCode) { Device device = null; String userId = AuthorUtil.getUserId(); String adminId = AuthorUtil.getAdminId(); if (adminId != null) { logger.info("get admin:{} device:{}", adminId, deviceId); AdminAccount adminAccount = adminService.getUserById(adminId); boolean isPrimaryAdmin = adminAccount.isPrimaryAdminFlag(); if (isPrimaryAdmin) { logger.info("get isPrimaryAdmin device:{}", deviceId); device = deviceService.getDevice(deviceId); } else { // 普通管理员用户目前基本使用 国标id 进行设备操作 device = adminService.getAdminDeviceBySipId(adminId, deviceId); } } else if (userId != null) { device = accountService.getAccountDevice(userId, deviceId); } else if (shareCode != null) { // 判断是否为分享码访问 device = deviceService.getDevice(deviceId); if (!deviceShare.shareCheck(device, shareCode, false)) { // 判断设备分享是否过期,如果过期则自动进行关闭分享 if (deviceShare.checkShareCodeIsExpires(device, device.getShareCode()) == 0) { // 设备还在分享中, 延长分享时间 deviceShare.updateTime(device); } else { deviceShare.closeShare(device); } } } return device; } }