门通道授权 同步人脸库 人像下发状态
This commit is contained in:
parent
dfd6ccef18
commit
750c7c5ead
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-04-21 07:11
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hrm', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='employee',
|
||||||
|
name='third_info',
|
||||||
|
field=models.JSONField(blank=True, default=dict, verbose_name='三方信息'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -44,6 +44,7 @@ class Employee(CommonBModel):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
# class Card(CommonAModel):
|
# class Card(CommonAModel):
|
||||||
# """
|
# """
|
||||||
# 卡
|
# 卡
|
||||||
|
|
|
@ -9,7 +9,7 @@ from apps.utils.tools import rannum, ranstr
|
||||||
from .models import ClockRecord, Employee, NotWorkRemark
|
from .models import ClockRecord, Employee, NotWorkRemark
|
||||||
from apps.system.serializers import DeptSimpleSerializer,UserSimpleSerializer
|
from apps.system.serializers import DeptSimpleSerializer,UserSimpleSerializer
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from apps.utils.dahua import dhClient
|
from apps.third.clients import dhClient
|
||||||
from apps.third.tapis import dhapis
|
from apps.third.tapis import dhapis
|
||||||
import re
|
import re
|
||||||
from server.settings import DEBUG
|
from server.settings import DEBUG
|
||||||
|
@ -50,7 +50,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
||||||
instance = super().create(validated_data)
|
instance = super().create(validated_data)
|
||||||
if dhClient:
|
if dhClient:
|
||||||
# 创建人员
|
# 创建人员
|
||||||
_, res = dhClient.request(**dhapis['gen_person_id'])
|
_, res = dhClient.request(**dhapis['person_gen_id'])
|
||||||
personId = res['id']
|
personId = res['id']
|
||||||
departmentId = 1
|
departmentId = 1
|
||||||
if instance.belong_dept:
|
if instance.belong_dept:
|
||||||
|
@ -85,7 +85,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
||||||
)
|
)
|
||||||
_, res = dhClient.request(**dhapis['person_add'], json=json_data)
|
_, res = dhClient.request(**dhapis['person_add'], json=json_data)
|
||||||
# 开人脸卡
|
# 开人脸卡
|
||||||
_, res = dhClient.request(**dhapis['gen_card_id'])
|
_, res = dhClient.request(**dhapis['card_gen_id'])
|
||||||
cardId = res['id']
|
cardId = res['id']
|
||||||
cardNumber = instance.id[:8] + rannum(2)
|
cardNumber = instance.id[:8] + rannum(2)
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
|
@ -159,7 +159,7 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
||||||
# 开人脸卡
|
# 开人脸卡
|
||||||
if instance.job_state in [Employee.JOB_ON]:
|
if instance.job_state in [Employee.JOB_ON]:
|
||||||
if not third_info.get('dh_face_card', None):
|
if not third_info.get('dh_face_card', None):
|
||||||
_, res = dhClient.request(**dhapis['gen_card_id'])
|
_, res = dhClient.request(**dhapis['card_gen_id'])
|
||||||
cardId = res['id']
|
cardId = res['id']
|
||||||
cardNumber = instance.id[3:8] + rannum(5)
|
cardNumber = instance.id[3:8] + rannum(5)
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
|
|
|
@ -23,8 +23,9 @@ from rest_framework.exceptions import ParseError
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from apps.utils.dahua import dhClient
|
from apps.third.clients import dhClient
|
||||||
from apps.third.tapis import dhapis
|
from apps.third.tapis import dhapis
|
||||||
|
from server import settings
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
class EmployeeViewSet(CustomModelViewSet):
|
class EmployeeViewSet(CustomModelViewSet):
|
||||||
|
@ -41,7 +42,7 @@ class EmployeeViewSet(CustomModelViewSet):
|
||||||
search_fields = ['name', 'number', 'user__username']
|
search_fields = ['name', 'number', 'user__username']
|
||||||
ordering = ['-pk']
|
ordering = ['-pk']
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post': 'employee_notworkremark'}
|
@action(methods=['post'], detail=True, perms_map={'post': 'employee.notworkremark'}
|
||||||
, serializer_class=EmployeeNotWorkRemarkSerializer)
|
, serializer_class=EmployeeNotWorkRemarkSerializer)
|
||||||
def not_work_remark(self, request, pk=None):
|
def not_work_remark(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
|
@ -73,7 +74,7 @@ class EmployeeViewSet(CustomModelViewSet):
|
||||||
raise ParseError(**NO_NEED_LEVEL_REMARK)
|
raise ParseError(**NO_NEED_LEVEL_REMARK)
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
@action(methods=['post'], detail=False, perms_map={'post': 'employee_channel_authority'}
|
@action(methods=['post'], detail=False, perms_map={'post': 'employee.channel_authority'}
|
||||||
, serializer_class=ChannelAuthoritySerializer)
|
, serializer_class=ChannelAuthoritySerializer)
|
||||||
def channel_authority(self, request, pk=None):
|
def channel_authority(self, request, pk=None):
|
||||||
"""门通道授权
|
"""门通道授权
|
||||||
|
@ -107,6 +108,59 @@ class EmployeeViewSet(CustomModelViewSet):
|
||||||
Employee.objects.bulk_update(objs, fields = ['third_info'])
|
Employee.objects.bulk_update(objs, fields = ['third_info'])
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@transaction.atomic
|
||||||
|
@action(methods=['post'], detail=False, perms_map={'post': 'employee.face_bind_1'}
|
||||||
|
, serializer_class=serializers.Serializer)
|
||||||
|
def face_bind_1(self, request, pk=None):
|
||||||
|
"""同步人脸库1
|
||||||
|
|
||||||
|
全部人脸库
|
||||||
|
"""
|
||||||
|
# 获取设备
|
||||||
|
json_data = {
|
||||||
|
"pageNum":1,
|
||||||
|
"pageSize":1000,
|
||||||
|
"ownerCodes":['001'],
|
||||||
|
"showChildNodeData":1,
|
||||||
|
# "isOnline":1
|
||||||
|
}
|
||||||
|
_, res = dhClient.request(**dhapis['dev_page'], json=json_data)
|
||||||
|
devs = []
|
||||||
|
if res['pageData']:
|
||||||
|
for i in res['pageData']:
|
||||||
|
devs.append(i['deviceCode'])
|
||||||
|
# 编辑人像库
|
||||||
|
json_data = {
|
||||||
|
"groupid":settings.DAHUA_FACEGROUPID_1,
|
||||||
|
"groupname":"全体人员",
|
||||||
|
"groupdetail":"全体人员",
|
||||||
|
"grouptype":3,
|
||||||
|
"deviceCodeList":devs,
|
||||||
|
"syncState":0
|
||||||
|
}
|
||||||
|
dhClient.request(**dhapis['face_group_update'], json=json_data)
|
||||||
|
# 人像绑定
|
||||||
|
json_data = {
|
||||||
|
"deptId":1,
|
||||||
|
"groupIdList":[settings.DAHUA_FACEGROUPID_1],
|
||||||
|
"cascade":True
|
||||||
|
}
|
||||||
|
dhClient.request(**dhapis['face_bind'], json=json_data)
|
||||||
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['get'], detail=False, perms_map={'get': 'employee.face_bind_1'}
|
||||||
|
, serializer_class=serializers.Serializer)
|
||||||
|
def face_status_1(self, request, pk=None):
|
||||||
|
"""人像下发状态
|
||||||
|
|
||||||
|
人像下发状态
|
||||||
|
"""
|
||||||
|
params = {'id':settings.DAHUA_FACEGROUPID_1}
|
||||||
|
_, res = dhClient.request(**dhapis['face_group_info'], params=params)
|
||||||
|
return Response(res)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
打卡记录
|
打卡记录
|
||||||
|
|
|
@ -134,7 +134,7 @@ class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
|
|
||||||
请求日志
|
请求日志
|
||||||
"""
|
"""
|
||||||
perms_map = {'get':'requestlog_view'}
|
perms_map = {'get':'requestlog.view'}
|
||||||
queryset = DrfRequestLog.objects.all()
|
queryset = DrfRequestLog.objects.all()
|
||||||
list_serializer_class = DrfRequestLogSerializer
|
list_serializer_class = DrfRequestLogSerializer
|
||||||
ordering = ['-requested_at']
|
ordering = ['-requested_at']
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
|
@ -1,5 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class MqConfig(AppConfig):
|
|
||||||
name = 'mq'
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
# Create your views here.
|
|
|
@ -1,11 +1,11 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from simple_history.admin import SimpleHistoryAdmin
|
from simple_history.admin import SimpleHistoryAdmin
|
||||||
from .models import User, Dept, Role, Permission, DictType, Dict, File
|
from .models import User, Dept, Role, Permission, DictType, Dictionary, File
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(User)
|
admin.site.register(User)
|
||||||
admin.site.register(Dept)
|
admin.site.register(Dept)
|
||||||
admin.site.register(Role)
|
admin.site.register(Role)
|
||||||
admin.site.register(Permission)
|
admin.site.register(Permission)
|
||||||
admin.site.register(DictType)
|
admin.site.register(DictType)
|
||||||
admin.site.register(Dict, SimpleHistoryAdmin)
|
admin.site.register(Dictionary, SimpleHistoryAdmin)
|
||||||
admin.site.register(File)
|
admin.site.register(File)
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-04-21 07:11
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0003_remove_user_phone'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Dictionary',
|
||||||
|
fields=[
|
||||||
|
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||||
|
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||||
|
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||||
|
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
|
('name', models.CharField(max_length=60, verbose_name='名称')),
|
||||||
|
('value', models.CharField(max_length=10, verbose_name='值')),
|
||||||
|
('code', models.CharField(blank=True, max_length=30, null=True, verbose_name='标识')),
|
||||||
|
('description', models.TextField(blank=True, null=True, verbose_name='描述')),
|
||||||
|
('sort', models.PositiveSmallIntegerField(default=1, verbose_name='排序')),
|
||||||
|
('is_used', models.BooleanField(default=True, verbose_name='是否有效')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dictionary_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.dictionary', verbose_name='父')),
|
||||||
|
('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.dicttype', verbose_name='类型')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dictionary_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '字典',
|
||||||
|
'verbose_name_plural': '字典',
|
||||||
|
'ordering': ['sort'],
|
||||||
|
'unique_together': {('name', 'is_used', 'type')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.DeleteModel(
|
||||||
|
name='Dict',
|
||||||
|
),
|
||||||
|
]
|
|
@ -163,7 +163,7 @@ class DictType(CommonAModel):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Dict(CommonAModel):
|
class Dictionary(CommonAModel):
|
||||||
"""
|
"""
|
||||||
数据字典
|
数据字典
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -6,7 +6,7 @@ from django_celery_results.models import TaskResult
|
||||||
from apps.system.errors import ROLE_CODE_EXIST, ROLE_NAME_EXIST, USERNAME_EXIST
|
from apps.system.errors import ROLE_CODE_EXIST, ROLE_NAME_EXIST, USERNAME_EXIST
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
|
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE
|
||||||
from .models import (Dict, DictType, File, Dept, Permission, Post,
|
from .models import (Dictionary, DictType, File, Dept, Permission, Post,
|
||||||
Role, User, UserPost)
|
Role, User, UserPost)
|
||||||
from rest_framework.exceptions import ParseError, APIException
|
from rest_framework.exceptions import ParseError, APIException
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
@ -84,7 +84,7 @@ class DictSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Dict
|
model = Dictionary
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
class DictCreateUpdateSerializer(CustomModelSerializer):
|
class DictCreateUpdateSerializer(CustomModelSerializer):
|
||||||
|
@ -93,7 +93,7 @@ class DictCreateUpdateSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Dict
|
model = Dictionary
|
||||||
exclude = EXCLUDE_FIELDS
|
exclude = EXCLUDE_FIELDS
|
||||||
|
|
||||||
class PostSerializer(CustomModelSerializer):
|
class PostSerializer(CustomModelSerializer):
|
||||||
|
@ -195,7 +195,7 @@ class DeptCreateUpdateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
from apps.utils.dahua import dhClient
|
from apps.third.clients import dhClient
|
||||||
if dhClient:
|
if dhClient:
|
||||||
data = {
|
data = {
|
||||||
"parentId":1,
|
"parentId":1,
|
||||||
|
@ -210,7 +210,7 @@ class DeptCreateUpdateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
from apps.utils.dahua import dhClient
|
from apps.third.clients import dhClient
|
||||||
third_info = instance.third_info
|
third_info = instance.third_info
|
||||||
if dhClient and not third_info.get('dh_id', False):
|
if dhClient and not third_info.get('dh_id', False):
|
||||||
# 如果dh_id 不存在
|
# 如果dh_id 不存在
|
||||||
|
|
|
@ -21,7 +21,7 @@ from apps.utils.queryset import get_child_queryset2
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from server.celery import app as celery_app
|
from server.celery import app as celery_app
|
||||||
from .filters import UserFilter
|
from .filters import UserFilter
|
||||||
from .models import (Dept, Dict, DictType, File, Permission, Post, Role, User,
|
from .models import (Dept, Dictionary, DictType, File, Permission, Post, Role, User,
|
||||||
UserPost)
|
UserPost)
|
||||||
from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer,
|
from .serializers import (DeptCreateUpdateSerializer, DeptSerializer, DictCreateUpdateSerializer, DictSerializer, DictTypeCreateUpdateSerializer, DictTypeSerializer,
|
||||||
FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer, PermissionSerializer, PostCreateUpdateSerializer, PostSerializer,
|
FileSerializer, PasswordChangeSerializer, PermissionCreateUpdateSerializer, PermissionSerializer, PostCreateUpdateSerializer, PostSerializer,
|
||||||
|
@ -69,7 +69,7 @@ class PTaskViewSet(CustomModelViewSet):
|
||||||
select_related_fields = ['interval', 'crontab']
|
select_related_fields = ['interval', 'crontab']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
@action(methods=['put'], detail=True, perms_map={'put': 'ptask_update'})
|
@action(methods=['put'], detail=True, perms_map={'put': 'ptask.update'})
|
||||||
def toggle(self, request, pk=None):
|
def toggle(self, request, pk=None):
|
||||||
"""修改启用禁用状态
|
"""修改启用禁用状态
|
||||||
|
|
||||||
|
@ -185,8 +185,8 @@ class DictViewSet(CustomModelViewSet):
|
||||||
|
|
||||||
数据字典-增删改查
|
数据字典-增删改查
|
||||||
"""
|
"""
|
||||||
# queryset = Dict.objects.get_queryset(all=True) # 获取全部的,包括软删除的
|
# queryset = Dictionary.objects.get_queryset(all=True) # 获取全部的,包括软删除的
|
||||||
queryset = Dict.objects.all()
|
queryset = Dictionary.objects.all()
|
||||||
filterset_fields = ['type', 'is_used', 'type__code']
|
filterset_fields = ['type', 'is_used', 'type__code']
|
||||||
serializer_class = DictSerializer
|
serializer_class = DictSerializer
|
||||||
create_serializer_class = DictCreateUpdateSerializer
|
create_serializer_class = DictCreateUpdateSerializer
|
||||||
|
@ -263,7 +263,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
||||||
|
|
||||||
用户/岗位关系
|
用户/岗位关系
|
||||||
"""
|
"""
|
||||||
perms_map = {'get': '*', 'post': 'user_update', 'delete': 'user_update'}
|
perms_map = {'get': '*', 'post': 'user.update', 'delete': 'user.update'}
|
||||||
queryset = UserPost.objects.select_related('user', 'post', 'dept').all()
|
queryset = UserPost.objects.select_related('user', 'post', 'dept').all()
|
||||||
serializer_class = UserPostSerializer
|
serializer_class = UserPostSerializer
|
||||||
create_serializer_class = UserPostCreateSerializer
|
create_serializer_class = UserPostCreateSerializer
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
from apps.utils.xunxi import XxClient
|
||||||
|
from apps.utils.dahua import DhClient
|
||||||
|
|
||||||
|
dhClient = DhClient()
|
||||||
|
xxClient = XxClient()
|
|
@ -12,7 +12,7 @@ dhapis = {
|
||||||
"url":"/evo-apigw/evo-brm/1.0.0/department/update",
|
"url":"/evo-apigw/evo-brm/1.0.0/department/update",
|
||||||
"method":"put"
|
"method":"put"
|
||||||
},
|
},
|
||||||
"gen_person_id":{
|
"person_gen_id":{
|
||||||
"url":"/evo-apigw/evo-brm/1.0.0/person/generate-id",
|
"url":"/evo-apigw/evo-brm/1.0.0/person/generate-id",
|
||||||
"method":"get"
|
"method":"get"
|
||||||
},
|
},
|
||||||
|
@ -48,7 +48,7 @@ dhapis = {
|
||||||
"url":"/evo-apigw/evo-brm/1.2.0/card/add",
|
"url":"/evo-apigw/evo-brm/1.2.0/card/add",
|
||||||
"method":"post"
|
"method":"post"
|
||||||
},
|
},
|
||||||
"gen_card_id": {
|
"card_gen_id": {
|
||||||
"url":"/evo-apigw/evo-brm/1.0.0/card/generate-id",
|
"url":"/evo-apigw/evo-brm/1.0.0/card/generate-id",
|
||||||
"method":"get"
|
"method":"get"
|
||||||
},
|
},
|
||||||
|
@ -63,6 +63,26 @@ dhapis = {
|
||||||
"mq_unsubscribe": {
|
"mq_unsubscribe": {
|
||||||
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
|
"url":"/evo-apigw/evo-event/1.0.0/subscribe/mqinfo",
|
||||||
"method":"delete"
|
"method":"delete"
|
||||||
|
},
|
||||||
|
"face_bind":{
|
||||||
|
"url":"/evo-apigw/evo-face/deptGroup/sync/bindPerson",
|
||||||
|
"method":"post"
|
||||||
|
},
|
||||||
|
"dev_tree":{
|
||||||
|
"url":"/evo-apigw/evo-face/tree/getDevChnIdsAndName",
|
||||||
|
"method":"get"
|
||||||
|
},
|
||||||
|
"dev_page":{
|
||||||
|
"url":"/evo-apigw/evo-brm/1.2.0/device/subsystem/page",
|
||||||
|
"method":"post"
|
||||||
|
},
|
||||||
|
"face_group_update":{
|
||||||
|
"url":"/evo-apigw/evo-face/groupInfo/update",
|
||||||
|
"method":"post"
|
||||||
|
},
|
||||||
|
"face_group_info":{
|
||||||
|
"url":"/evo-apigw/evo-face/groupInfo/view/{id}",
|
||||||
|
"method":"get"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
from rest_framework.exceptions import ParseError, APIException
|
from rest_framework.exceptions import ParseError, APIException
|
||||||
from apps.third.tapis import dhapis, xxapis
|
from apps.third.tapis import dhapis, xxapis
|
||||||
from apps.third.erros import TAPI_CODE_WRONG
|
from apps.third.erros import TAPI_CODE_WRONG
|
||||||
from apps.utils.dahua import dhClient
|
from apps.third.clients import dhClient
|
||||||
from apps.utils.errors import XX_REQUEST_ERROR
|
from apps.utils.errors import XX_REQUEST_ERROR
|
||||||
from apps.utils.mixins import MyLoggingMixin
|
from apps.utils.mixins import MyLoggingMixin
|
||||||
from apps.utils.xunxi import xxClient
|
from apps.third.clients import xxClient
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.permissions import IsAuthenticated, IsAdminUser
|
from rest_framework.permissions import IsAuthenticated, IsAdminUser
|
||||||
|
@ -14,6 +14,8 @@ from rest_framework.decorators import action
|
||||||
|
|
||||||
from apps.third.serializers import RequestCommonSerializer
|
from apps.third.serializers import RequestCommonSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
import stomp
|
||||||
|
from server import settings
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,6 +50,19 @@ class XxTestView(APIView):
|
||||||
else:
|
else:
|
||||||
raise APIException(**res)
|
raise APIException(**res)
|
||||||
|
|
||||||
|
class XxListener(stomp.ConnectionListener):
|
||||||
|
def on_error(self, frame):
|
||||||
|
print('received an error "%s"' % frame.body)
|
||||||
|
|
||||||
|
def on_message(self, frame):
|
||||||
|
print('received a message "%s"' % frame.body)
|
||||||
|
|
||||||
|
|
||||||
|
# if settings.XX_ENABLED:
|
||||||
|
# c = stomp.Connection([(settings.XX_MQ_HOST, settings.XX_MQ_PORT)])
|
||||||
|
# c.set_listener('', XxListener())
|
||||||
|
# c.connect(settings.XX_USERNAME, settings.XX_LICENCE)
|
||||||
|
# c.subscribe(settings.XX_QUEUE, id='')
|
||||||
|
|
||||||
class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
class XxCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
|
@ -161,3 +176,25 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
dhClient.request(**dhapis['mq_unsubscribe'], params={'name':'127.0.0.1_8000'})
|
dhClient.request(**dhapis['mq_unsubscribe'], params={'name':'127.0.0.1_8000'})
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False,
|
||||||
|
authentication_classes=[], permission_classes=[],
|
||||||
|
serializer_class=serializers.Serializer)
|
||||||
|
def mq(self, request, pk=None):
|
||||||
|
"""大华事件处理
|
||||||
|
|
||||||
|
大华事件处理
|
||||||
|
"""
|
||||||
|
data = request.data
|
||||||
|
method = data['method']
|
||||||
|
subsystem = data.get('subsystem', None)
|
||||||
|
info = data.get('info', {})
|
||||||
|
if method == 'department.update':
|
||||||
|
pass
|
||||||
|
elif method == 'person.update':
|
||||||
|
pass
|
||||||
|
elif method == 'alarm.msg' and subsystem == 'evo-accesscontrol':
|
||||||
|
"""
|
||||||
|
刷卡事件
|
||||||
|
"""
|
||||||
|
return Response()
|
|
@ -101,7 +101,7 @@ class DhClient:
|
||||||
self.request(url, method, params, json, timeout, file_path_rela, raise_exception)
|
self.request(url, method, params, json, timeout, file_path_rela, raise_exception)
|
||||||
else:
|
else:
|
||||||
if ret['code'] not in ['0', '100', '00000', '1000', 0, 100, 1000]:
|
if ret['code'] not in ['0', '100', '00000', '1000', 0, 100, 1000]:
|
||||||
detail = '大华错误:' + '{}|{}{}'.format(str(ret['code']), ret.get('errMsg',''), ret.get('desc', ''))
|
detail = '大华错误:' + '{}|{}{}{}'.format(str(ret['code']), ret.get('errMsg',''), ret.get('desc', ''), str(ret.get('data', '')))
|
||||||
err_detail = dict(detail=detail, code='dh_'+str(ret['code']))
|
err_detail = dict(detail=detail, code='dh_'+str(ret['code']))
|
||||||
if raise_exception:
|
if raise_exception:
|
||||||
raise ParseError(**err_detail)
|
raise ParseError(**err_detail)
|
||||||
|
|
|
@ -106,11 +106,11 @@ class CustomModelViewSet(CreateModelMixin
|
||||||
# 增加默认权限标识
|
# 增加默认权限标识
|
||||||
if not self.perms_map:
|
if not self.perms_map:
|
||||||
basename = self.basename
|
basename = self.basename
|
||||||
self.perms_map = {'get':'*', 'post':'{}_create'.format(basename)
|
self.perms_map = {'get':'*', 'post':'{}.create'.format(basename)
|
||||||
,'put':'{}_update'.format(basename)
|
,'put':'{}.update'.format(basename)
|
||||||
,'patch':'{}_update'.format(basename)
|
,'patch':'{}.update'.format(basename)
|
||||||
,'delete':'{}_delete'.format(basename)
|
,'delete':'{}.delete'.format(basename)
|
||||||
,'deletes':'{}_delete'.format(basename)}
|
,'deletes':'{}.delete'.format(basename)}
|
||||||
for k, v in self.perms_map.items():
|
for k, v in self.perms_map.items():
|
||||||
if v not in ALL_PERMS and v!='*':
|
if v not in ALL_PERMS and v!='*':
|
||||||
ALL_PERMS.append(v)
|
ALL_PERMS.append(v)
|
||||||
|
|
|
@ -90,6 +90,4 @@ class XxClient:
|
||||||
return 'success', ret['data']
|
return 'success', ret['data']
|
||||||
if raise_exception:
|
if raise_exception:
|
||||||
raise APIException(**XX_REQUEST_ERROR)
|
raise APIException(**XX_REQUEST_ERROR)
|
||||||
return 'error', XX_REQUEST_ERROR
|
return 'error', XX_REQUEST_ERROR
|
||||||
|
|
||||||
xxClient = XxClient()
|
|
|
@ -4,7 +4,7 @@ from django.db.models.base import Model
|
||||||
import django.utils.timezone as timezone
|
import django.utils.timezone as timezone
|
||||||
from django.db.models.query import QuerySet
|
from django.db.models.query import QuerySet
|
||||||
from apps.utils.models import CommonAModel
|
from apps.utils.models import CommonAModel
|
||||||
from apps.system.models import Dept, User, Dict, File
|
from apps.system.models import Dept, User, File
|
||||||
from apps.utils.models import SoftModel, BaseModel
|
from apps.utils.models import SoftModel, BaseModel
|
||||||
from simple_history.models import HistoricalRecords
|
from simple_history.models import HistoricalRecords
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,4 @@ daphne==3.0.2
|
||||||
channels==3.0.4
|
channels==3.0.4
|
||||||
channels-redis==3.4.0
|
channels-redis==3.4.0
|
||||||
django-restql==0.15.2
|
django-restql==0.15.2
|
||||||
|
stomp.py==8.0.0
|
||||||
|
|
|
@ -312,13 +312,17 @@ DAHUA_USERNAME = conf.DAHUA_USERNAME
|
||||||
DAHUA_PASSWORD = conf.DAHUA_PASSWORD
|
DAHUA_PASSWORD = conf.DAHUA_PASSWORD
|
||||||
DAHUA_CLIENTID = conf.DAHUA_CLIENTID
|
DAHUA_CLIENTID = conf.DAHUA_CLIENTID
|
||||||
DAHUA_SECRET = conf.DAHUA_SECRET
|
DAHUA_SECRET = conf.DAHUA_SECRET
|
||||||
|
DAHUA_FACEGROUPID_1 = conf.DAHUA_FACEGROUPID_1
|
||||||
|
|
||||||
# 寻息定位
|
# 寻息定位
|
||||||
XX_ENABLED = conf.XX_ENABLED
|
XX_ENABLED = conf.XX_ENABLED
|
||||||
XX_BASE_URL = conf.XX_BASE_URL
|
XX_BASE_URL = conf.XX_BASE_URL
|
||||||
|
XX_MQ_HOST = conf.XX_MQ_HOST
|
||||||
|
XX_MQ_PORT = conf.XX_MQ_PORT
|
||||||
XX_LICENCE = conf.XX_LICENCE
|
XX_LICENCE = conf.XX_LICENCE
|
||||||
XX_USERNAME = conf.XX_USERNAME
|
XX_USERNAME = conf.XX_USERNAME
|
||||||
XX_BUILDID = conf.XX_BUILDID
|
XX_BUILDID = conf.XX_BUILDID
|
||||||
|
XX_QUEUE = conf.XX_QUEUE
|
||||||
|
|
||||||
# 运维相关
|
# 运维相关
|
||||||
SD_PWD = conf.SD_PWD
|
SD_PWD = conf.SD_PWD
|
||||||
|
|
Loading…
Reference in New Issue