提交 aef9ceb9 authored 作者: 蒋代伟's avatar 蒋代伟

智慧门店 客流量统计

上级 15438a56
...@@ -1359,9 +1359,9 @@ urlpatterns = [ ...@@ -1359,9 +1359,9 @@ urlpatterns = [
url(r'^sales/activity/PromotionSeeds_lottery/$', sal_views.PromotionSeeds_lottery), url(r'^sales/activity/PromotionSeeds_lottery/$', sal_views.PromotionSeeds_lottery),
#2023-12-13 智慧门店 海康威视获取视频流 #2023-12-13 智慧门店 海康威视获取视频流/客流统计
url(r'^smartdevice/hikvision/getLiveAddress/(?P<company_id>\d+)/$',sd_views.getLiveAddress), url(r'^smartdevice/hikvision/(?P<what>\w+)/(?P<company_id>\d+)/$',sd_views.getCameraInfo),
url(r'^smartdevice/hikvision/getLiveAddress/(?P<company_id>\d+)/(?P<deviceSerial>\w+)/$',sd_views.getLiveAddress), url(r'^smartdevice/hikvision/(?P<what>\w+)/(?P<company_id>\d+)/(?P<deviceSerial>\w+)/$',sd_views.getCameraInfo),
] ]
......
...@@ -38,6 +38,7 @@ class Device(models.Model): ...@@ -38,6 +38,7 @@ class Device(models.Model):
name = models.CharField(_('设备名称'), max_length=50, db_index=True) name = models.CharField(_('设备名称'), max_length=50, db_index=True)
status=models.SmallIntegerField(_('设备状态'),default=1,choices=((1,'正常'),(2,'休眠'),(3,'关闭')),blank=True,null=True) status=models.SmallIntegerField(_('设备状态'),default=1,choices=((1,'正常'),(2,'休眠'),(3,'关闭')),blank=True,null=True)
is_open_live_video = models.BooleanField(_('是否开通标准流预览'), default=False) is_open_live_video = models.BooleanField(_('是否开通标准流预览'), default=False)
hik_store_id = models.CharField(_('海康云眸平台内部门店id'), max_length=100, null=True, blank=True)
is_active = models.BooleanField(_('是否已激活'), default=True) is_active = models.BooleanField(_('是否已激活'), default=True)
is_delete = models.BooleanField(_('是否已删除'), default=False) is_delete = models.BooleanField(_('是否已删除'), default=False)
remark = models.CharField(_('备注说明'), max_length=100, null=True, blank=True) remark = models.CharField(_('备注说明'), max_length=100, null=True, blank=True)
......
...@@ -11,13 +11,14 @@ from smartdevice.hikTools import HikTools ...@@ -11,13 +11,14 @@ from smartdevice.hikTools import HikTools
from .models import Device from .models import Device
def getLiveAddress(request,company_id,deviceSerial=None): def getCameraInfo(request,what,company_id,deviceSerial=None):
hikTools = HikTools() hikTools = HikTools()
access_token = hikTools.get_hik_stoken() access_token = hikTools.get_hik_stoken()
if access_token: if access_token:
if what == 'getLiveAddress':
# 查询当前公司设备是否存在设备并开启视频流 # 查询当前公司设备是否存在设备并开启视频流
device = Device.objects.filter(company_id=company_id) device = Device.objects.filter(company_id=company_id, is_delete=False, is_active=True,category_id=1)
if device is not None: if device is not None:
deviceSerial = device[0].sn deviceSerial = device[0].sn
if device[0].is_open_live_video == False: if device[0].is_open_live_video == False:
...@@ -42,5 +43,49 @@ def getLiveAddress(request,company_id,deviceSerial=None): ...@@ -42,5 +43,49 @@ def getLiveAddress(request,company_id,deviceSerial=None):
return JsonResponse(res, safe=False) return JsonResponse(res, safe=False)
else: else:
return JsonResponse({'code': 200, "message": "获取预览播放地址失败"}, safe=False) return JsonResponse({'code': 200, "message": "获取预览播放地址失败"}, safe=False)
elif what == 'getPassengerHourFlow':
device = Device.objects.filter(company_id=company_id, is_delete=False, is_active=True, category_id=2)
if device is not None:
deviceSerial = device[0].sn
hik_store_id = device[0].hik_store_id
if device[0].is_open_live_video == False:
is_open = hikTools.act_liveVideo(deviceSerial, 'open')
if is_open['code'] == 200:
device[0].is_open_live_video = True
device[0].save()
dt = request.GET.get("dateTime")
hik_url = "https://api2.hik-cloud.com/v1/customization/passenger_hour_flow?dateTime="+dt+"&storeId="+hik_store_id
headers = {"Authorization": "Bearer " + access_token['access_token']}
res = requests.get(hik_url, headers=headers,);
if res.status_code == 200:
res = res.json()
return JsonResponse(res, safe=False)
else:
return JsonResponse({'code': 200, "message": "门店的客流统计数据查询失败"}, safe=False)
return JsonResponse({'code': 200, "message": "ok"}, safe=False)
else: else:
return JsonResponse({'code': 200,"message":"获取token校验错误"}, safe=False) return JsonResponse({'code': 200,"message":"获取token校验错误"}, safe=False)
#获取门店id列表
# def getStoreInfo(request,company_id):
# hikTools = HikTools()
# access_token = hikTools.get_hik_stoken()
# if access_token:
# hik_url = "https://api2.hik-cloud.com/v1/customization/organization/actions/getStoreInfo"
# headers = {"Content-Type": "application/json", "Authorization": "Bearer " + access_token['access_token']}
# data = json.dumps({
# "orgIndexCode": company_id,
# "pageNo": 1,
# "pageSize": 20
# })
# res = requests.post(hik_url, headers=headers, data=data);
# if res.status_code == 200:
# res = res.json()
# return JsonResponse(res, safe=False)
# else:
# return JsonResponse({'code': 200, "message": "获取门店列表失败"}, safe=False)
# else:
# return JsonResponse({'code': 200, "message": "获取token校验错误"}, safe=False)
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论