feat: 直接使用大华的门禁权限接口吧
This commit is contained in:
parent
9c0423d0dc
commit
3a07c2b47c
|
@ -232,15 +232,6 @@ class HrmService:
|
|||
# elif is_ok == 'error':
|
||||
# raise APIException(**DH_REQUEST_ERROR)
|
||||
cls.save(ep, data={'dh_dchannels': dh_dchannels})
|
||||
from apps.third.models import DoorAuth
|
||||
from apps.utils.snowflake import idWorker
|
||||
DoorAuth.objects.filter(employee=ep).delete()
|
||||
drs = []
|
||||
for i in dh_dchannels:
|
||||
id = idWorker.get_id()
|
||||
drs.append(
|
||||
DoorAuth(id=id, employee=ep, dchannel=TDevice.objects.get(code=i)))
|
||||
DoorAuth.objects.bulk_create(drs)
|
||||
return dh_dchannels
|
||||
|
||||
@classmethod
|
||||
|
@ -478,39 +469,19 @@ class HrmService:
|
|||
except Exception as e:
|
||||
return None, '人脸数据获取失败请重新上传图片'
|
||||
|
||||
@classmethod
|
||||
def init_doorauth(cls):
|
||||
"""
|
||||
根据third_info里的dchannels信息生成表, 后续dchannels可以不用了
|
||||
"""
|
||||
from apps.third.models import DoorAuth
|
||||
from apps.utils.snowflake import idWorker
|
||||
DoorAuth.objects.all().delete()
|
||||
for ind, ep in enumerate(Employee.objects.all().order_by('create_time')):
|
||||
third_info = ep.third_info
|
||||
if third_info.get('dh_dchannels', None):
|
||||
drs = []
|
||||
for i in third_info['dh_dchannels']:
|
||||
id = idWorker.get_id()
|
||||
drs.append(
|
||||
DoorAuth(id=id, employee=ep, dchannel=TDevice.objects.get(code=i)))
|
||||
DoorAuth.objects.bulk_create(drs)
|
||||
print(f'{ind+1}-{ep.name}-doorauth已创建')
|
||||
|
||||
@classmethod
|
||||
def clear_bgl_r(cls):
|
||||
"""
|
||||
清空办公室打卡门禁的相关方权限
|
||||
"""
|
||||
from apps.third.models import DoorAuth
|
||||
qs = DoorAuth.objects.filter(
|
||||
employee__type='remployee', dchannel__code='1002222$7$0$0')
|
||||
for ins in qs:
|
||||
dh_face_card = ins.employee.third_info['dh_face_card']
|
||||
dh_id = ins.employee.third_info['dh_id']
|
||||
_, res = dhClient.request(**dhapis['card_door_authority_list'], json={
|
||||
"pageNum": 1, "pageSize": 1000, "channelCode": "1002222$7$0$0"})
|
||||
for i in res['pageData']:
|
||||
ep = Employee.objects.get(third_info__dh_face_card=i['cardNumber'])
|
||||
dh_face_card = i['cardNumber']
|
||||
dh_id = ep.third_info['dh_id']
|
||||
rdict = {"personIdsString": str(dh_id),
|
||||
"cardNumberString": str(dh_face_card), "channelCode": ins.dchannel.code}
|
||||
"cardNumberString": str(dh_face_card), "channelCode": "1002222$7$0$0"}
|
||||
dhClient.request(
|
||||
**dhapis['card_door_authority_delete'], json=rdict)
|
||||
ins.delete()
|
||||
print(f'{ins.employee.name}-办公室打卡权限已删除')
|
||||
print(f'{ep.name}-办公室打卡权限已删除')
|
||||
|
|
|
@ -70,6 +70,10 @@ dhapis = {
|
|||
},
|
||||
"card_door_authority_delete": {
|
||||
"url": "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority/removeAuthorizeAllCardNumberByChannelCode",
|
||||
"method": "post",
|
||||
},
|
||||
"card_door_authority_list": {
|
||||
"url": "/evo-apigw/evo-accesscontrol/1.0.0/card/accessControl/doorAuthority/ChannelWithAuthorizeStatus/bycondition/combined",
|
||||
"method": "post"
|
||||
},
|
||||
"mq_subscribe": {
|
||||
|
|
|
@ -2,7 +2,7 @@ from email.mime import base
|
|||
from django.urls import path, include
|
||||
from rest_framework import routers
|
||||
from apps.third.views import DahuaTestView, DhCommonViewSet, SpTestView, SpeakerViewSet, XxCommonViewSet, XxTestView
|
||||
from apps.third.views_d import BltViewSet, TDeviceViewSet, TlogViewSet, DoorAuthViewSet
|
||||
from apps.third.views_d import BltViewSet, TDeviceViewSet, TlogViewSet
|
||||
|
||||
API_BASE_URL = 'api/third/'
|
||||
HTML_BASE_URL = 'third/'
|
||||
|
@ -14,7 +14,7 @@ router.register('speaker', SpeakerViewSet, basename='api_speaker')
|
|||
router.register('tdevice', TDeviceViewSet, basename='tdevice')
|
||||
router.register('tlog', TlogViewSet, basename='tlog')
|
||||
router.register('tdevice/blt', BltViewSet, basename='blt')
|
||||
router.register('doorauth', DoorAuthViewSet, basename='doorauth')
|
||||
# router.register('doorauth', DoorAuthViewSet, basename='doorauth')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
path(API_BASE_URL + 'dahua/test/', DahuaTestView.as_view()),
|
||||
|
|
|
@ -16,6 +16,8 @@ from rest_framework.exceptions import ParseError
|
|||
from django.db import transaction
|
||||
from rest_framework.mixins import ListModelMixin, CreateModelMixin, DestroyModelMixin, UpdateModelMixin
|
||||
from apps.utils.serializers import PkSerializer
|
||||
from apps.hrm.serializers import EmployeeShortSerializer
|
||||
from apps.hrm.models import Employee
|
||||
from django.core.cache import cache
|
||||
|
||||
|
||||
|
@ -462,6 +464,31 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
|
|||
i['my_info'] = tds_dict[i['channelCode']]
|
||||
return Response(res)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||
serializer_class=Serializer, logging_methods=[])
|
||||
def dchannel_auth(self, request):
|
||||
"""
|
||||
门禁权限
|
||||
|
||||
门禁权限
|
||||
"""
|
||||
_, res = dhClient.request(
|
||||
**dhapis['card_door_authority_list'], json=request.data)
|
||||
codes = []
|
||||
if res.get('pageData', None):
|
||||
for i in res['pageData']:
|
||||
codes.append(i['cardNumber'])
|
||||
eps_info = EmployeeShortSerializer(
|
||||
instance=Employee.objects.filter(third_info__dh_face_card__in=codes), many=True).data
|
||||
eps_dict = {}
|
||||
for i in eps_info:
|
||||
eps_dict[i['third_info']['dh_face_card']] = i
|
||||
for i in res['pageData']:
|
||||
i['my_info'] = {}
|
||||
if i['cardNumber'] in eps_dict:
|
||||
i['my_info'] = eps_dict[i['cardNumber']]
|
||||
return Response(res)
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'tdevice.label_location'},
|
||||
serializer_class=LabelLocationSerializer)
|
||||
def label_location(self, request, pk=None):
|
||||
|
|
Loading…
Reference in New Issue