DeviceHelper.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.genersoft.iot.vmp.utils;
  2. import com.genersoft.iot.vmp.gb28181.DeviceShare;
  3. import com.genersoft.iot.vmp.gb28181.bean.Device;
  4. import com.genersoft.iot.vmp.service.IAccountService;
  5. import com.genersoft.iot.vmp.service.IAdminService;
  6. import com.genersoft.iot.vmp.service.IDeviceService;
  7. import com.genersoft.iot.vmp.storager.dao.dto.AdminAccount;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. @Component
  13. public class DeviceHelper {
  14. private final static Logger logger = LoggerFactory.getLogger(DeviceHelper.class);
  15. @Autowired
  16. private IAdminService adminService;
  17. @Autowired
  18. private IAccountService accountService;
  19. @Autowired
  20. private IDeviceService deviceService;
  21. @Autowired
  22. private DeviceShare deviceShare;
  23. /**
  24. * 获取设备
  25. *
  26. * @param deviceId
  27. * @param shareCode
  28. * @return
  29. */
  30. public Device getDevice(String deviceId, String shareCode) {
  31. Device device = null;
  32. String userId = AuthorUtil.getUserId();
  33. String adminId = AuthorUtil.getAdminId();
  34. if (adminId != null) {
  35. logger.info("get admin:{} device:{}", adminId, deviceId);
  36. AdminAccount adminAccount = adminService.getUserById(adminId);
  37. boolean isPrimaryAdmin = adminAccount.isPrimaryAdminFlag();
  38. if (isPrimaryAdmin) {
  39. logger.info("get isPrimaryAdmin device:{}", deviceId);
  40. device = deviceService.getDevice(deviceId);
  41. } else {
  42. // 普通管理员用户目前基本使用 国标id 进行设备操作
  43. device = adminService.getAdminDeviceBySipId(adminId, deviceId);
  44. }
  45. } else if (userId != null) {
  46. device = accountService.getAccountDevice(userId, deviceId);
  47. } else if (shareCode != null) {
  48. // 判断是否为分享码访问
  49. device = deviceService.getDevice(deviceId);
  50. if (!deviceShare.shareCheck(device, shareCode, false)) {
  51. // 判断设备分享是否过期,如果过期则自动进行关闭分享
  52. if (deviceShare.checkShareCodeIsExpires(device, device.getShareCode()) == 0) {
  53. // 设备还在分享中, 延长分享时间
  54. deviceShare.updateTime(device);
  55. } else {
  56. deviceShare.closeShare(device);
  57. }
  58. }
  59. }
  60. return device;
  61. }
  62. }